From ea51f27ee3ea46d2d2259516c49e00197ba0b399 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期四, 12 十二月 2024 16:43:30 +0800
Subject: [PATCH] 合作商权限
---
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java | 740 ++++++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 573 insertions(+), 167 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 e06dd46..5ed82b6 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
@@ -9,6 +9,7 @@
import com.ruoyi.account.api.model.*;
import com.ruoyi.account.api.vo.GetAppUserVipDetail;
import com.ruoyi.account.api.vo.GetInviteUser;
+import com.ruoyi.chargingPile.api.dto.GetSiteListDTO;
import com.ruoyi.chargingPile.api.feignClient.*;
import com.ruoyi.chargingPile.api.model.*;
import com.ruoyi.chargingPile.api.vo.GetChargingGunByCode;
@@ -19,6 +20,7 @@
import com.ruoyi.common.core.web.page.PageInfo;
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;
@@ -58,6 +60,8 @@
import com.ruoyi.payment.api.model.RefundResp;
import com.ruoyi.payment.api.model.WxPaymentRefundModel;
import com.ruoyi.payment.api.vo.*;
+import com.ruoyi.system.api.domain.SysUser;
+import com.ruoyi.system.api.feignClient.SysUserClient;
import io.seata.spring.annotation.GlobalTransactional;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -98,7 +102,8 @@
private ChargingGunClient chargingGunClient;
@Resource
private TSettlementConfirmMapper tSettlementConfirmMapper;
-
+ @Resource
+ private PartnerClient partnerClient;
@Resource
private SiteClient siteClient;
@@ -187,6 +192,9 @@
@Resource
private SecurityDetectionClient securityDetectionClient;
+
+ @Resource
+ private BmsDemandAndChargerExportationClient bmsDemandAndChargerExportationClient;
//计数器
private Map<String, Integer> counter_map = new HashMap<>();
@@ -256,11 +264,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 +289,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 +313,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 +406,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())
@@ -447,7 +466,6 @@
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();
@@ -511,13 +529,13 @@
if(2 == addChargingOrder.getPaymentType()){
AliPaymentReq req = new AliPaymentReq();
req.setOutTradeNo(chargingOrder.getCode());
- req.setTotalAmount(chargingOrder.getPaymentAmount().toString());
+ req.setTotalAmount(addChargingOrder.getPaymentAmount().toString());
req.setSubject("充电充值");
req.setBuyerOpenId(appUser.getAliOpenid());
req.setBody("充电充值");
+ req.setNotifyUrl("/payment/ali/callBack");
AliPaymentResp data = aliPaymentClient.payment(req).getData();
if(null != data){
- data.setNotifyUrl(data.getNotifyUrl() + "/order/t-charging-order/chargingOrderALICallback");
return AjaxResult.success(data);
}
}
@@ -658,7 +676,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();
@@ -686,10 +704,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();
@@ -731,14 +746,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;
@@ -827,7 +842,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();
@@ -872,8 +887,7 @@
dto.setRefundReason("充电失败,取消充电订单");
RefundResp resp = aliPaymentClient.refund(dto).getData();
if(null != resp){
- SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-DDTHH:mm:ss+TIMEZONE");
- AjaxResult success = chargingOrderStartupFailureWxRefund(resp.getOutTradeNo(), resp.getTradeNo(), "SUCCESS", sdf1.format(new Date()));
+ AjaxResult success = chargingOrderStartupFailureWxRefund(resp.getOutTradeNo(), resp.getTradeNo(), "SUCCESS", null);
if(success.isSuccess()){
chargingOrderRefundService.save(chargingOrderRefund);
}
@@ -923,7 +937,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){
+ if(null == one || !one.getAppUserId().equals(userId)){
return null;
}
ChargingDetails chargingDetails = new ChargingDetails();
@@ -947,16 +961,12 @@
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));
- }
- //转换成UTC时间
- ChargingHandshake chargingHandshake = chargingHandshakeClient.getDataByOrderCode(one.getCode()).getData();
- if(null != chargingHandshake && null != data && null != one.getAppUserCarId()){
- BigDecimal bms_battery_capacity = chargingHandshake.getBms_battery_capacity();
- TAppUserCar appUserCar = appUserCarClient.getCarByIds(Arrays.asList(one.getAppUserCarId())).getData().get(0);
- // 续航 = 电池容量 / 续航里程 * soc
- BigDecimal divide = bms_battery_capacity.divide(new BigDecimal(appUserCar.getEndurance()));
- BigDecimal multiply = new BigDecimal(data.getSoc() / 100).multiply(divide);
- chargingDetails.setEndurance(multiply);
+ 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()));
+ chargingDetails.setEndurance(multiply.setScale(2, RoundingMode.HALF_EVEN));
+ }
}
return chargingDetails;
}
@@ -978,6 +988,10 @@
if(status == 4 || status == 5){
return AjaxResult.error("不能重复操作");
}
+ Long userId = tokenService.getLoginUserApplet().getUserId();
+ if(!order.getAppUserId().equals(userId)){
+ return AjaxResult.error("权限不足");
+ }
TChargingOrder chargingOrder = new TChargingOrder();
chargingOrder.setId(Long.valueOf(id));
chargingOrder.setAppUserId(order.getAppUserId());
@@ -986,19 +1000,19 @@
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();
}
@@ -1082,6 +1096,7 @@
if(1 == doubleIntegration){
num1 *= 2;
}
+
}
GetInviteUser query = new GetInviteUser();
@@ -1104,12 +1119,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);
@@ -1153,7 +1168,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());
@@ -1199,6 +1214,23 @@
}
dto.setUserIds(data);
}
+ Long userId = tokenService.getLoginUser().getUserid();
+ //如果没传siteId,获取当前登陆人所有的siteIds
+ List<Integer> siteIds = new ArrayList<>();
+ if (dto.getSiteId()==null){
+ if (userId != null){
+ List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData();
+ for (GetSiteListDTO datum : data) {
+ siteIds.add(datum.getId());
+ }
+ }
+ }else {
+ siteIds.add(dto.getSiteId());
+ }
+ 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);
BigDecimal total = new BigDecimal("0");
@@ -1206,9 +1238,20 @@
BigDecimal income = new BigDecimal("0");
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");
+ // 查询当前登陆人按钮权限
+ SysUser sysUser = sysUserClient.getSysUser(tokenService.getLoginUser().getUserid()).getData();
+ Integer roleType = sysUser.getRoleType();
for (ChargingOrderVO chargingOrderVO : list) {
- chargingOrderVO.setCommissionAmount(chargingOrderVO.getServiceCharge().multiply(new BigDecimal("0.006")));
- chargingOrderVO.setPlatFormMoney(chargingOrderVO.getServiceCharge().multiply(new BigDecimal("0.006")));
+ if (roleType == 2){
+ // 校验有没有这个站点的权限
+ Boolean t1= partnerClient.getChargingOrderMenu(sysUser.getObjectId(),chargingOrderVO.getSiteId()).getData();
+ chargingOrderVO.setAuthRecord(t1);
+ }
+ chargingOrderVO.setCommissionAmount(chargingOrderVO.getOrderAmount()!=null?chargingOrderVO.getOrderAmount().multiply(new BigDecimal("0.006")):new BigDecimal("0"));
+ chargingOrderVO.setPlatFormMoney(chargingOrderVO.getOrderAmount()!=null?chargingOrderVO.getOrderAmount().multiply(new BigDecimal("0.006")).setScale(2,BigDecimal.ROUND_DOWN):new BigDecimal("0"));
chargingOrderVO.setUid(chargingOrderVO.getId()+"");
TChargingGun data3 = chargingGunClient.getChargingGunById(chargingOrderVO.getChargingGunId()).getData();
TChargingPile data2 = chargingPileClient.getChargingPileById(chargingOrderVO.getChargingPileId()).getData();
@@ -1225,7 +1268,7 @@
List<TChargingOrderAccountingStrategy> chargingOrderId = chargingOrderAccountingStrategyService.list(new QueryWrapper<TChargingOrderAccountingStrategy>()
.eq("charging_order_id", chargingOrderVO.getId()));
UploadRealTimeMonitoringData data5 = uploadRealTimeMonitoringDataClient.chargingOrderInfo(chargingOrderVO.getCode()).getData();
- if (data5!=null){
+ if (data5!=null && data5.getCumulative_charging_time()!=null){
long l = data5.getCumulative_charging_time() * 60L;
chargingOrderVO.setChargingSecond(l);
}
@@ -1249,29 +1292,33 @@
}
}
for (ChargingOrderVO chargingOrderVO : list1) {
+ paymentMoney= paymentMoney.add(chargingOrderVO.getPaymentAmount()!=null?chargingOrderVO.getPaymentAmount():new BigDecimal("0"));
+ commissionMoney = commissionMoney.add(chargingOrderVO.getOrderAmount()!=null?chargingOrderVO.getOrderAmount().multiply(new BigDecimal("0.006")):new BigDecimal("0"));
if (chargingOrderVO.getChargingCapacity()!=null){
- total = total.add(chargingOrderVO.getElectricity());
+ total = total.add(chargingOrderVO.getElectricity()!=null?chargingOrderVO.getElectricity():new BigDecimal("0"));
}
// 充电订单 明细记录
List<TChargingOrderAccountingStrategy> chargingOrderId = chargingOrderAccountingStrategyService.list(new QueryWrapper<TChargingOrderAccountingStrategy>()
.eq("charging_order_id", chargingOrderVO.getId()));
UploadRealTimeMonitoringData data5 = uploadRealTimeMonitoringDataClient.chargingOrderInfo(chargingOrderVO.getCode()).getData();
- if (data5!=null){
+ if (data5!=null && data5.getCumulative_charging_time()!=null){
long l = data5.getCumulative_charging_time() * 60L;
chargingOrderVO.setChargingSecond(l);
time+=l;
}
- electronicMoney = electronicMoney.add(chargingOrderVO.getElectrovalence());
- serviceMoney = serviceMoney.add(chargingOrderVO.getServiceCharge());
-
- income = income.add(chargingOrderVO.getOrderAmount());
-
-
-
+ List<TChargingOrderRefund> list2 = chargingOrderRefundService.lambdaQuery().eq(TChargingOrderRefund::getRefundStatus, 2)
+ .eq(TChargingOrderRefund::getChargingOrderId, chargingOrderVO.getId()).list();
+ for (TChargingOrderRefund tChargingOrderRefund : list2) {
+ if (tChargingOrderRefund.getRefundStatus()==2){
+ refundMoney = refundMoney.add(tChargingOrderRefund.getRefundTotalAmount());
+ }
+ }
+ electronicMoney = electronicMoney.add(chargingOrderVO.getElectrovalence()!=null?chargingOrderVO.getElectrovalence():new BigDecimal("0"));
+ serviceMoney = serviceMoney.add(chargingOrderVO.getServiceCharge()!=null?chargingOrderVO.getServiceCharge():new BigDecimal("0"));
}
tCharingOrderVO.setTotal(total);
tCharingOrderVO.setTime(time);
- tCharingOrderVO.setIncome(income);
+ tCharingOrderVO.setIncome(paymentMoney.subtract(commissionMoney));
tCharingOrderVO.setElectronicMoney(electronicMoney);
tCharingOrderVO.setServiceMoney(serviceMoney);
pageInfo.setRecords(list);
@@ -1288,9 +1335,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);
@@ -1352,7 +1399,8 @@
return this.baseMapper.getYearData(chargingOrderIds);
}
-
+ @Resource
+ private SysUserClient sysUserClient;
@Override
public ChargingOrderTimeVO chargingList(ChargingListQuery dto) {
String startTime1 = null;
@@ -1396,16 +1444,40 @@
dto.setCarIds(carIds);
}
}
+ Long userId = tokenService.getLoginUser().getUserid();
+ //如果没传siteId,获取当前登陆人所有的siteIds
+ List<Integer> siteIds = new ArrayList<>();
+ if (dto.getSiteId()==null){
+ if (userId != null){
+ List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData();
+ for (GetSiteListDTO datum : data) {
+ siteIds.add(datum.getId());
+ }
+ }
+ }else {
+ siteIds.add(dto.getSiteId());
+ }
+ if (siteIds.isEmpty()){
+ siteIds.add(-1);
+ }
+ dto.setSiteIds(siteIds);
PageInfo<ChargingOrderListVO> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize());
List<ChargingOrderListVO> list = this.baseMapper.chargingList(pageInfo,dto,startTime1,startTime2,endTime1,endTime2);
+ // 查询当前登陆人按钮权限
+ SysUser sysUser = sysUserClient.getSysUser(tokenService.getLoginUser().getUserid()).getData();
+ Integer roleType = sysUser.getRoleType();
for (ChargingOrderListVO chargingOrderListVO : list) {
+ 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());
- 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());
@@ -1424,17 +1496,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+"");
}
}
@@ -1614,13 +1696,12 @@
@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){
- chargingOrderListInfoVO.setCommissionAmount(chargingOrder.getOrderAmount().multiply(bigDecimal));
+ BigDecimal multiply = chargingOrder.getPaymentAmount().multiply(bigDecimal);
+ chargingOrderListInfoVO.setCommissionAmount(multiply.setScale(2, BigDecimal.ROUND_HALF_UP));
}
chargingOrderListInfoVO.setElectrovalence(chargingOrder.getElectrovalence());
chargingOrderListInfoVO.setServiceCharge(chargingOrder.getServiceCharge());
@@ -1654,6 +1735,7 @@
}
}
}
+ chargingOrderListInfoVO.setChargingCapacity(chargingOrder.getChargingCapacity());
chargingOrderListInfoVO.setEndMode(chargingOrder.getEndMode());
@@ -1665,24 +1747,40 @@
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.setChargingCapacity(data6.get(data6.size()-1).getCharging_degree());
- chargingOrderListInfoVO.setChargingSecond(data6.get(data6.size()-1).getCumulative_charging_time()*60+"");
+ 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();
+ }
+ }
+ 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);
}
+ // 获取充电时间
+ 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();
@@ -1735,6 +1833,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);
}
}
@@ -1774,7 +1876,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;
}
@@ -1787,7 +1889,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");
@@ -1867,9 +1969,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();
@@ -1892,20 +1992,20 @@
}
//已充电总度数
- BigDecimal electrovalenc = strategyDetail.getElectrovalence().multiply(sharp_peak_charge).setScale(2, RoundingMode.DOWN);
- BigDecimal originalServicePrice = strategyDetail.getServiceCharge().multiply(sharp_peak_charge).setScale(2, RoundingMode.DOWN);
+ 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()){
- vipDiscountAmount = serviceCharge.multiply(new BigDecimal(1).subtract(chargingOrder.getVipDiscount())).setScale(2, RoundingMode.DOWN);
- serviceCharge = serviceCharge.multiply(chargingOrder.getVipDiscount()).setScale(2, RoundingMode.DOWN);
+ vipDiscountAmount = serviceCharge.multiply(new BigDecimal(1).subtract(chargingOrder.getVipDiscount()));
+ serviceCharge = serviceCharge.multiply(chargingOrder.getVipDiscount());
}
chargingOrderAccountingStrategy.setChargingCapacity(sharp_peak_charge);
- chargingOrderAccountingStrategy.setPeriodElectricPrice(electrovalenc);
- chargingOrderAccountingStrategy.setPeriodServicePrice(serviceCharge);
- chargingOrderAccountingStrategy.setPeriodOriginalServicePrice(originalServicePrice);
- chargingOrderAccountingStrategy.setVipDiscountAmount(vipDiscountAmount);
+ 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);
@@ -1922,6 +2022,7 @@
//总金额(充值金额+会员折扣金额)
BigDecimal decimal = rechargeAmount.add(vipDiscountAmount);
//退款金额(已经计算了折扣优惠部分)
+ //如果充电总金额未使用完,则需要退回费用=(原金额/总金额)*(总金额-实际充电金额)
BigDecimal refundAmount = rechargeAmount.divide(decimal, new MathContext(4, RoundingMode.HALF_EVEN)).multiply(decimal.subtract(total));
BigDecimal orderAmount = BigDecimal.valueOf(total.doubleValue());
BigDecimal payAmount = BigDecimal.valueOf(total.doubleValue());
@@ -1940,8 +2041,6 @@
//服务费折扣
discountAmount = periodServicePrice_total.multiply((new BigDecimal(1).subtract(chargingOrder.getVipDiscount())));
- periodServicePrice_total = periodServicePrice_total.multiply(chargingOrder.getVipDiscount());
-
TVip vip = vipClient.getInfo1(appUser.getVipId()).getData();
BigDecimal maximumDeduction = vip.getMaximumDeduction();
//普通会员有最高优惠限制
@@ -1950,28 +2049,33 @@
}
}
}
+ //会员折扣金额
+ discountAmount = discountAmount.setScale(4, RoundingMode.HALF_EVEN);
payAmount = payAmount.subtract(discountAmount);
+ periodServicePrice_total = periodServicePrice_total.subtract(discountAmount);
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.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);
- order.setVipDiscountAmount(discountAmount);
- order.setElectrovalence(periodElectricPrice_total);
+ order.setOrderAmount(orderAmount.setScale(2, RoundingMode.HALF_EVEN));
+ order.setVipDiscountAmount(discountAmount.setScale(2, RoundingMode.HALF_EVEN));
+ order.setElectrovalence(periodElectricPrice_total.setScale(2, RoundingMode.HALF_EVEN));
order.setChargingCapacity(vo.getTotal_electricity());
order.setElectricity(vo.getTotal_electricity());
//计算优惠券
+ BigDecimal couponDiscount = BigDecimal.ZERO;
if(null != chargingOrder.getAppCouponId()){
//判断实际充电金额是否满足优惠券使用条件,如果不满足则不适用优惠券。
TAppCoupon appCoupon = appCouponClient.getAppCouponById(chargingOrder.getAppCouponId()).getData();
@@ -1984,17 +2088,11 @@
BigDecimal couponDiscountAmount = tCoupon.getDiscountAmount();
//如果优惠金额大于服务费金额,以服务费作为最大限制
if(periodServicePrice_total.compareTo(couponDiscountAmount) < 0){
- refundAmount = refundAmount.add(periodServicePrice_total);
- order.setCouponDiscountAmount(periodServicePrice_total);
- payAmount = payAmount.subtract(periodServicePrice_total);
+ couponDiscount = periodServicePrice_total;
periodServicePrice_total = BigDecimal.ZERO;
}else{
- refundAmount = refundAmount.add(couponDiscountAmount);
- order.setCouponDiscountAmount(couponDiscountAmount);
- payAmount = payAmount.subtract(couponDiscountAmount);
- periodServicePrice_total = periodServicePrice_total.subtract(couponDiscountAmount);
+ couponDiscount = couponDiscountAmount;
}
-
appCoupon.setStatus(2);
appCouponClient.updateAppCoupon(appCoupon);
}else{
@@ -2011,15 +2109,10 @@
divide = divide.compareTo(tCoupon.getMaximumDiscountAmount()) > 0 ? tCoupon.getMaximumDiscountAmount() : divide;
//如果优惠金额大于服务费金额,以服务费作为最大限制
if(periodServicePrice_total.compareTo(divide) < 0){
- refundAmount = refundAmount.add(periodServicePrice_total);
- order.setCouponDiscountAmount(periodServicePrice_total);
- payAmount = payAmount.subtract(periodServicePrice_total);
+ couponDiscount = periodServicePrice_total;
periodServicePrice_total = BigDecimal.ZERO;
}else{
- refundAmount = refundAmount.add(divide);
- order.setCouponDiscountAmount(divide);
- payAmount = payAmount.subtract(divide);
- periodServicePrice_total = periodServicePrice_total.subtract(divide);
+ couponDiscount = divide;
}
appCoupon.setStatus(2);
@@ -2031,10 +2124,17 @@
}
}
}
-
- order.setServiceCharge(periodServicePrice_total);
- order.setPaymentAmount(payAmount);
- order.setRefundAmount(refundAmount);
+ //优惠券优惠金额
+ couponDiscount = couponDiscount.setScale(4, RoundingMode.HALF_EVEN);
+ refundAmount = refundAmount.add(couponDiscount);
+ payAmount = payAmount.subtract(couponDiscount);
+ if(periodServicePrice_total.compareTo(BigDecimal.ZERO) > 0){
+ periodServicePrice_total = periodServicePrice_total.subtract(couponDiscount);
+ }
+ order.setCouponDiscountAmount(couponDiscount.setScale(2, RoundingMode.HALF_EVEN));
+ order.setServiceCharge(periodServicePrice_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());
@@ -2048,8 +2148,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.HALF_EVEN));
+ chargingOrderAccountingStrategy.setCouponDiscountAmount(multiply.setScale(2, RoundingMode.HALF_EVEN));
}
chargingOrderAccountingStrategyService.updateBatchById(list);
}
@@ -2066,7 +2166,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();
@@ -2139,8 +2239,7 @@
dto.setRefundReason("充电完成退款");
RefundResp resp = aliPaymentClient.refund(dto).getData();
if(null != resp){
- SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-DDTHH:mm:ss+TIMEZONE");
- AjaxResult success = chargingOrderStartupFailureWxRefund(resp.getOutTradeNo(), resp.getTradeNo(), "SUCCESS", sdf1.format(new Date()));
+ AjaxResult success = chargingOrderStartupFailureWxRefund(resp.getOutTradeNo(), resp.getTradeNo(), "SUCCESS", null);
if(success.isSuccess()){
chargingOrderRefundService.save(chargingOrderRefund);
}
@@ -2171,8 +2270,8 @@
}
@Override
- public List<Map<String, Object>> usersDay() {
- return this.baseMapper.usersDay();
+ public List<Map<String, Object>> usersDay(ChargingStatisticsQueryDto statisticsQueryDto) {
+ return this.baseMapper.usersDay(statisticsQueryDto);
}
@Override
@@ -2245,6 +2344,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();
@@ -2311,6 +2413,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());
@@ -2361,9 +2467,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);
@@ -2378,6 +2482,8 @@
if (tChargingOrder.getPaymentAmount().compareTo(payOrderQueryDto.getRefundAmount())==-1){
return R.fail("退款金额需小于支付金额");
}
+
+
TVipOrderRefund chargingOrderRefund = new TVipOrderRefund();
chargingOrderRefund.setVipOrderId(tChargingOrder.getId());
chargingOrderRefund.setRefundAmount(payOrderQueryDto.getRefundAmount());
@@ -2456,8 +2562,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, 5));
+ .eq(TChargingOrder::getDelFlag, 0).between(TChargingOrder::getStartTime, query.getStartTime(), LocalDateTime.now())
+ .eq(TChargingOrder::getRechargePaymentStatus, 2).in(TChargingOrder::getStatus, Arrays.asList(4, 5)));
return one;
}
@@ -2547,23 +2653,20 @@
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());
+ orderCommission = orderCommission.add(tChargingOrder.getPaymentAmount().multiply(new BigDecimal("0.006"))
+ .setScale(2,BigDecimal.ROUND_DOWN));
}
+
}
+
// 三方交易手续费 三方收费*0.6%
commissionAmount = sharingAmount.multiply(new BigDecimal("0.006"));
- // 订单手续费 订单支付金额 - 退款金额*0.6%
- 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.setScale(2, RoundingMode.HALF_DOWN));
- tSettlementConfirm.setServiceCharge(serviceCharge.setScale(2, RoundingMode.HALF_DOWN));
+ tSettlementConfirm.setServiceCharge(serviceCharge.subtract(orderCommission).setScale(2, RoundingMode.HALF_DOWN));
tSettlementConfirm.setOrderCommission(orderCommission);
tSettlementConfirm.setVipDiscount(vipDiscount);
tSettlementConfirm.setCouponDiscount(couponDiscount);
@@ -2575,6 +2678,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());
@@ -2589,24 +2694,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 divide = tSettlementConfirm.getProportionMoney().divide(subtract, 2, BigDecimal.ROUND_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;
@@ -2614,21 +2721,50 @@
@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);
+ Long userId = tokenService.getLoginUser().getUserid();
+ //如果没传siteId,获取当前登陆人所有的siteIds
+ List<Integer> siteIds = new ArrayList<>();
+ if (dto.getSiteIds()==null){
+ if (userId != null){
+ List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData();
+ for (GetSiteListDTO datum : data) {
+ siteIds.add(datum.getId());
+ }
+ }
+ }else {
+ siteIds.add(dto.getSiteIds());
+ }
+ if (siteIds.isEmpty()){
+ siteIds.add(-1);
+ }
+ dto.setSiteIdss(siteIds);
PageInfo<TSettlementConfirm> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize());
List<TSettlementConfirm> list = tSettlementConfirmMapper.settlementList(pageInfo,dto);
+ // 查询当前登陆人按钮权限
+ SysUser sysUser = sysUserClient.getSysUser(tokenService.getLoginUser().getUserid()).getData();
+ Integer roleType = sysUser.getRoleType();
for (TSettlementConfirm tSettlementConfirm : list) {
+ 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()){
@@ -2651,12 +2787,24 @@
@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 (siteIds.isEmpty()){
+ siteIds.add(-1);
+ }
SettlementTotalVO res = new SettlementTotalVO();
- List<TSettlementConfirm> list1 = tSettlementConfirmMapper.settlementTotal(time);
+ 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);
+ List<TSettlementConfirm> list2 = tSettlementConfirmMapper.settlementTotal(time,siteIds);
// 合计
List<TSettlementConfirm> total = new ArrayList<>();
@@ -2694,7 +2842,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()){
@@ -2752,10 +2902,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();
// 计算充电桩的功率平均值
@@ -2790,12 +2947,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"+"%");
@@ -2812,11 +2971,252 @@
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);
+ tSettlementConfirm.setIncome(income);
+ tSettlementConfirm.setVenue(venue);
+ tSettlementConfirm.setMetering(metering);
+ tSettlementConfirm.setClean(clean);
+ tSettlementConfirm.setMaintain(maintain);
+ tSettlementConfirm.setCost(cost);
+ tSettlementConfirm.setProfitMoney(profitMoney);
+ tSettlementConfirm.setNewMoney(newMoney);
+ tSettlementConfirm.setNewSettlement(newSettlement);
+ tSettlementConfirm.setSupplyElectronic(supplyElectronic);
+ tSettlementConfirm.setProportionPartner(proportionPartner);
+ tSettlementConfirm.setProportionMoney(proportionMoney);
+ tSettlementConfirm.setTotalElectronic(totalElectronic);
+ tSettlementConfirm.setTotalService(totalService);
+ tSettlementConfirm.setServicePartner(servicePartner);
+ tSettlementConfirm.setServiceMoney(serviceMoney);
+ tSettlementConfirm.setSharingAmount(sharingAmount);
+ tSettlementConfirm.setCommissionAmount(commissionAmount);
+ tSettlementConfirm.setElectrovalence(electrovalence);
+ tSettlementConfirm.setServiceCharge(serviceCharge);
+ tSettlementConfirm.setOrderCommission(orderCommission);
+ 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+"%");
+
+ }
+ // 比较总利润 收入合计-成本合计
+ 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"))+"%");
+ }
+ tSettlementConfirm.setElectronicRefund(0);
+ // 查询上次汇报数据 进行比对涨幅跌幅
+ total.add(tSettlementConfirm);
+ res.setList1(list1);
+ res.setList2(total);
+ return res;
+ }
+ @Override
+ 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 (siteIds.isEmpty()){
+ siteIds.add(-1);
+ }
+ SettlementTotalVO res = new SettlementTotalVO();
+ 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> total = new ArrayList<>();
+
+ TSettlementConfirm tSettlementConfirm1 = new TSettlementConfirm();
+ BigDecimal meteringElectronic = new BigDecimal("0");
+ BigDecimal chargingElectronic = new BigDecimal("0");
+ BigDecimal lossElectronic = new BigDecimal("0");
+ BigDecimal income = new BigDecimal("0");
+ BigDecimal venue = new BigDecimal("0");
+ BigDecimal metering = new BigDecimal("0");
+ BigDecimal clean = new BigDecimal("0");
+ BigDecimal maintain = new BigDecimal("0");
+ BigDecimal cost = new BigDecimal("0");
+ BigDecimal profitMoney = new BigDecimal("0");
+ BigDecimal newMoney = new BigDecimal("0");
+ BigDecimal newSettlement = new BigDecimal("0");
+ BigDecimal supplyElectronic = new BigDecimal("0");
+ BigDecimal proportionPartner = new BigDecimal("0");
+ BigDecimal proportionMoney = new BigDecimal("0");
+ BigDecimal totalElectronic = new BigDecimal("0");
+ BigDecimal totalService = new BigDecimal("0");
+ BigDecimal servicePartner = new BigDecimal("0");
+ BigDecimal serviceMoney = new BigDecimal("0");
+ BigDecimal sharingAmount = new BigDecimal("0");
+ BigDecimal commissionAmount = new BigDecimal("0");
+ BigDecimal electrovalence = new BigDecimal("0");
+ BigDecimal serviceCharge = new BigDecimal("0");
+ 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");
+ // 上月利润合计
+ 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()){
+ tSettlementConfirm.setSiteName(data1.get(0).getName());
+ }
+ if (tSettlementConfirm.getMeteringElectronic()!=null){
+ meteringElectronic = meteringElectronic.add(tSettlementConfirm.getMeteringElectronic());
+ chargingElectronic = chargingElectronic.add(tSettlementConfirm.getChargingElectronic());
+ }
+ if (tSettlementConfirm.getLossElectronic()!=null){
+ lossElectronic = lossElectronic.add(tSettlementConfirm.getLossElectronic());
+ }
+ income = income.add(tSettlementConfirm.getIncome());
+ venue = venue.add(tSettlementConfirm.getVenue());
+ metering = metering.add(tSettlementConfirm.getMetering());
+ clean = clean.add(tSettlementConfirm.getClean());
+ maintain = maintain.add(tSettlementConfirm.getMaintain());
+ cost = cost.add(tSettlementConfirm.getCost());
+ profitMoney = profitMoney.add(tSettlementConfirm.getProfitMoney());
+ newMoney = newMoney.add(tSettlementConfirm.getNewMoney());
+ newSettlement = newSettlement.add(tSettlementConfirm.getNewSettlement());
+ supplyElectronic = supplyElectronic.add(tSettlementConfirm.getSupplyElectronic());
+ proportionPartner = proportionPartner.add(tSettlementConfirm.getProportionPartner());
+ proportionMoney = proportionMoney.add(tSettlementConfirm.getProportionMoney());
+ totalElectronic = totalElectronic.add(tSettlementConfirm.getTotalElectronic());
+ totalService = totalService.add(tSettlementConfirm.getTotalService());
+ servicePartner = servicePartner.add(tSettlementConfirm.getServicePartner());
+ serviceMoney = serviceMoney.add(tSettlementConfirm.getServiceMoney());
+ sharingAmount = sharingAmount.add(tSettlementConfirm.getSharingAmount());
+ commissionAmount = commissionAmount.add(tSettlementConfirm.getCommissionAmount());
+ electrovalence = electrovalence.add(tSettlementConfirm.getElectrovalence());
+ serviceCharge = serviceCharge.add(tSettlementConfirm.getServiceCharge());
+ 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()){
+ case 1:
+ eq.between("start_time", tSettlementConfirm.getStartTime(), tSettlementConfirm.getEndTime());
+ break;
+ case 2:
+ eq.between("end_time", tSettlementConfirm.getStartTime(), tSettlementConfirm.getEndTime());
+ break;
+ }
+ List<TChargingOrder> tChargingOrders = this.baseMapper.selectList(eq);
+ Map<String,TChargingOrder> map = new HashMap<>();
+ StringBuilder stringBuilder = new StringBuilder();
+ for (TChargingOrder tChargingOrder : tChargingOrders) {
+ stringBuilder.append(tChargingOrder.getCode()).append(",");
+
+ }
+ // 充电总时长
+
+ Long temp = 1L;
+ if (StringUtils.hasLength(stringBuilder.toString())){
+ 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();
+ // 计算充电桩的功率平均值
+ BigDecimal bigDecimal = new BigDecimal("0");
+ 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())){
+ 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) {
+ 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(),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());
+ BigDecimal bigDecimal1 = subtract1.subtract(subtract2)
+ .divide(subtract2, 2, RoundingMode.HALF_DOWN)
+ .multiply(new BigDecimal("100"))
+ .setScale(2, RoundingMode.HALF_DOWN);
+ 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);
@@ -2870,8 +3270,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
@@ -2948,6 +3348,10 @@
public EndOfChargePageInfo getEndOfChargePageInfo(String id) {
EndOfChargePageInfo info = new EndOfChargePageInfo();
TChargingOrder chargingOrder = this.getById(id);
+ Long userId = tokenService.getLoginUserApplet().getUserId();
+ if(!chargingOrder.getAppUserId().equals(userId)){
+ throw new RuntimeException("权限不足");
+ }
info.setId(id);
info.setCode(chargingOrder.getCode());
info.setPaymentAmount(chargingOrder.getPaymentAmount());
@@ -2990,15 +3394,17 @@
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());
+ 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