From f103c8c1e09e2475dc4ac4d3ddc1598146e4da38 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期五, 28 八月 2026 15:55:12 +0800
Subject: [PATCH] 修复系统越权访问漏洞
---
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java | 1126 +++++++++++++++++++++++++++++------------------------------
1 files changed, 554 insertions(+), 572 deletions(-)
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
index 9fce2fd..fe83c06 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
@@ -1,6 +1,7 @@
package com.ruoyi.order.controller;
+
import com.alibaba.fastjson2.JSON;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import java.math.BigDecimal;
@@ -24,7 +25,6 @@
import com.ruoyi.common.core.dto.ChargingOrderGroup;
import com.ruoyi.common.core.dto.ChargingPercentProvinceDto;
import com.ruoyi.common.core.utils.StringUtils;
-import com.ruoyi.common.core.web.domain.BasePojo;
import com.ruoyi.common.log.annotation.Log;
import com.ruoyi.common.log.enums.BusinessType;
import com.ruoyi.common.log.enums.OperatorType;
@@ -34,12 +34,7 @@
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.page.PageInfo;
-import com.ruoyi.integration.api.model.PageChargingOrderAndUploadRealTimeMonitoringDataDto;
import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData;
-import com.ruoyi.common.security.utils.SecurityUtils;
-import com.ruoyi.integration.api.feignClient.UploadRealTimeMonitoringDataClient;
-import com.ruoyi.integration.api.model.ChargingOrderAndUploadRealTimeMonitoringDataDto;
-import com.ruoyi.integration.api.model.UploadRealTimeMonitoringPageData;
import com.ruoyi.order.api.dto.ChargingStatisticeDTO;
import com.ruoyi.order.api.model.*;
import com.ruoyi.order.api.query.ChargingOrderQuery;
@@ -61,12 +56,12 @@
import com.ruoyi.order.util.mongodb.service.UploadRealTimeMonitoringDataService;
import com.ruoyi.order.vo.EndOfChargePageInfo;
import com.ruoyi.order.vo.StatisticsOfBatteryVO;
+import com.ruoyi.order.vo.UpdateOrderPaymentAmountDto;
import com.ruoyi.order.vo.WatchChargingOrderVo;
import com.ruoyi.other.api.feignClient.RoleSiteClient;
import com.ruoyi.other.api.feignClient.UserSiteClient;
import com.ruoyi.payment.api.feignClient.AliPaymentClient;
import com.ruoyi.payment.api.feignClient.WxPaymentClient;
-import com.ruoyi.payment.api.vo.AliQueryOrder;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.feignClient.SysUserClient;
import com.ruoyi.system.api.feignClient.SysUserRoleClient;
@@ -79,18 +74,14 @@
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
-import java.io.PrintWriter;
import java.time.format.DateTimeFormatter;
-import java.time.temporal.ChronoUnit;
-import java.time.temporal.TemporalAdjusters;
import java.util.*;
import java.util.List;
import java.util.stream.Collectors;
/**
* <p>
- * 前端控制器
+ * 前端控制器
* </p>
*
* @author xiaochen
@@ -100,7 +91,7 @@
@RestController
@RequestMapping("/t-charging-order")
public class TChargingOrderController {
-
+
private Logger log = LoggerFactory.getLogger(TChargingOrderController.class);
@Resource
@@ -113,18 +104,18 @@
private TGrantVipService tGrantVipService;
@Resource
private WxPaymentClient wxPaymentClient;
-
+
@Resource
private RedisService redisService;
-
+
@Resource
private AliPaymentClient aliPaymentClient;
@Resource
private TShoppingOrderService shoppingOrderService;
-
+
@Resource
private AppUserClient appUserClient;
-
+
@Resource
private TVipOrderService vipOrderService;
@@ -147,7 +138,7 @@
private AppUserCarClient appUserCarClient;
@Resource
private TChargingOrderAccountingStrategyService chargingOrderAccountingStrategyService;
-
+
@Resource
private TOrderInvoiceService invoiceService;
@Resource
@@ -156,19 +147,19 @@
private PartnerClient partnerClient;
@Resource
private SysUserClient sysUserClient;
-
+
@Resource
private UserSiteClient userSiteClient;
-
+
@Resource
private RoleSiteClient roleSiteClient;
@Resource
private SysUserRoleClient sysUserRoleClient;
-
/**
* 远程调用 监管平台查询前一天用能统计
+ *
* @return
*/
@ResponseBody
@@ -176,9 +167,9 @@
public R<List<TChargingOrder>> getChargingStatistics(@RequestBody ChargingStatisticeDTO dto) {
List<Long> collect = chargingOrderAccountingStrategyService.lambdaQuery().between(TChargingOrderAccountingStrategy::getCreateTime, dto.getStartTime(), dto.getEndTime())
.list().stream().map(TChargingOrderAccountingStrategy::getChargingOrderId).collect(Collectors.toList());
- if (!collect.isEmpty()){
+ if (!collect.isEmpty()) {
List<TChargingOrder> list = chargingOrderService.lambdaQuery()
- .in(TChargingOrder::getId,collect).list();
+ .in(TChargingOrder::getId, collect).list();
return R.ok(list);
}
return R.ok(new ArrayList<TChargingOrder>());
@@ -186,6 +177,7 @@
/**
* 远程调用 增加管理后台赠送会员记录
+ *
* @return
*/
@ResponseBody
@@ -196,6 +188,7 @@
/**
* 远程调用根据枪id 查询最新的订单id 用户后台结束充电
+ *
* @param id
* @return
*/
@@ -210,103 +203,54 @@
.eq(TChargingOrder::getChargingGunId, id)
.in(TChargingOrder::getStatus, integers)
.one();
- if (one!=null){
+ if (one != null) {
return R.ok(one.getId().toString());
}
return R.ok();
}
-
+
@RequiresPermissions(value = {"/invoiceManagement/select_order", "/paymentOrder/order"}, logical = Logical.OR)
@ResponseBody
@PostMapping(value = "/pay/order/list")
@ApiOperation(value = "列表", tags = {"管理后台-支付订单-订单信息"})
public R<PageInfo<PayOrderDto>> payOrderList(@RequestBody PayOrderQueryDto payOrderQueryDto) {
- Integer pageCurr = payOrderQueryDto.getPageCurr();
- Integer pageSize = payOrderQueryDto.getPageSize();
- payOrderQueryDto.setPageCurr(1);
- payOrderQueryDto.setPageSize(10000999);
- PageInfo<PayOrderDto> data = chargingOrderService.payOrderQuery(payOrderQueryDto).getData();
- List<PayOrderDto> res = new ArrayList<>();
- // 查询当前登陆人按钮权限
- SysUser sysUser = sysUserClient.getSysUser(tokenService.getLoginUser().getUserid()).getData();
- Integer roleType = sysUser.getRoleType();
- Long userId = tokenService.getLoginUser().getUserid();
- //如果没传siteId,获取当前登陆人所有的siteIds
- List<Integer> siteIds = new ArrayList<>();
- if (userId != null){
- List<GetSiteListDTO> data2 = siteClient.getSiteListByUserId(userId).getData();
- for (GetSiteListDTO datum : data2) {
- siteIds.add(datum.getId());
- }
- }
- if (siteIds.isEmpty()){
- siteIds.add(-1);
- }
- List<TChargingOrder> list = chargingOrderService.list();
- List<TParkingRecord> parkingRecord = parkingLotClient.getSiteIdAll().getData();
- for (PayOrderDto record : data.getRecords()) {
- if (record.getType() == 1){
- TChargingOrder chargingOrder = list.stream().filter(e -> e.getId().equals(Long.valueOf(record.getId()))).findFirst().orElse(null);
- if (chargingOrder!=null){
- record.setSiteId(chargingOrder.getSiteId());
- }
- }
- if (record.getType()==4){
- TParkingRecord tParkingRecord = parkingRecord.stream().filter(e -> e.getId().equals(Long.valueOf(record.getId()))).findFirst().orElse(null);
- if (tParkingRecord!=null){
- record.setSiteId(tParkingRecord.getSiteId());
- }
- }
- if (roleType==1||(record.getType()!=1&&record.getType()!=4)){
- res.add(record);
- continue;
- }
- if (roleType==2 && (record.getType()==1||record.getType()==4) && siteIds.contains(record.getSiteId())){
- res.add(record);
- }
-
- }
- List<PayOrderDto> res1 = testing5(res.size(), pageCurr, pageSize, res);
- data.setTotal(res.size());
- data.setRecords(res1);
- return R.ok(data);
+ return chargingOrderService.payOrderQuery(payOrderQueryDto);
}
-
- public static List<PayOrderDto> testing5(long total, long current, long size, List<PayOrderDto> str){
- List<PayOrderDto> result = new ArrayList<>();
- //获取初始化分页结构
- com.ruoyi.order.util.Page<PayOrderDto> page = new com.ruoyi.order.util.Page().getPage(total, size, current - 1);
- //获取集合下标初始值
- long startIndex = page.getStartIndex();
- //获取集合下标结束值
- long endInddex = 0;
- if(startIndex + page.getCurrent() >= total || size > total){
- endInddex = total;
- }else {
- endInddex = Math.min(startIndex + page.getSize(), total);
+ public static List<PayOrderDto> testing5(long total, long current, long size, List<PayOrderDto> str) {
+ List<PayOrderDto> result = new ArrayList<>();
+ //获取初始化分页结构
+ com.ruoyi.order.util.Page<PayOrderDto> page = new com.ruoyi.order.util.Page().getPage(total, size, current - 1);
+ //获取集合下标初始值
+ long startIndex = page.getStartIndex();
+ //获取集合下标结束值
+ long endInddex = 0;
+ if (startIndex + page.getCurrent() >= total || size > total) {
+ endInddex = total;
+ } else {
+ endInddex = Math.min(startIndex + page.getSize(), total);
+ }
+ //如果输入的开始查询下标大于集合大小,则查询为空值
+ if (startIndex > total) {
+ result = Collections.emptyList();
+ } else {
+ result = str.subList((int) startIndex, (int) endInddex);
+ }
+ return result;
}
- //如果输入的开始查询下标大于集合大小,则查询为空值
- if(startIndex > total){
- result = Collections.emptyList();
- }else{
- result = str.subList((int)startIndex,(int)endInddex);
- }
- return result;
-}
-
@ResponseBody
+ @RequiresPermissions(value = {"/paymentOrder/refund", "/paymentOrder/refund/select"}, logical = Logical.OR)
@PostMapping(value = "/pay/order/refund")
@ApiOperation(value = "退款", tags = {"管理后台-支付订单-订单信息"})
public R refund(@RequestBody PayOrderRefundDto payOrderQueryDto) {
return chargingOrderService.payRefund(payOrderQueryDto);
}
-
-
+
+
@RequiresPermissions(value = {"/paymentOrder/order"}, logical = Logical.OR)
@ResponseBody
@GetMapping(value = "/pay/order/pay/detail")
@@ -325,6 +269,11 @@
payOrderInfoDto.setRefundAmount(byId.getRefundAmount());
payOrderInfoDto.setRechargeAmount(byId.getRechargeAmount());
payOrderInfoDto.setFinalAmount(byId.getRechargeAmount().subtract(byId.getRefundAmount()));
+ payOrderInfoDto.setPayMethod(byId.getPayMethod());
+ payOrderInfoDto.setBalancePayAmount(byId.getBalancePayAmount());
+ payOrderInfoDto.setThirdPayAmount(byId.getThirdPayAmount());
+ payOrderInfoDto.setBalanceRefundAmount(byId.getBalanceRefundAmount());
+ payOrderInfoDto.setThirdRefundAmount(byId.getThirdRefundAmount());
return R.ok(payOrderInfoDto);
case 2:
TShoppingOrder byId1 = shoppingOrderService.getById(orderId);
@@ -353,27 +302,25 @@
payOrderInfoDto2.setFinalAmount(byId2.getPaymentAmount().subtract(byId2.getRefundAmount()));
return R.ok(payOrderInfoDto2);
//todo luo 停车场订单
- case 4:
- R<TParkingRecord> recordById = parkingLotClient.getRecordById(orderId);
- TParkingRecord byId3 =recordById.getData();
- PayOrderInfoDto payOrderInfoDto3 = new PayOrderInfoDto();
- payOrderInfoDto3.setOrderId(byId3.getId().toString());
- payOrderInfoDto3.setCode(byId3.getCode());
- payOrderInfoDto3.setPayTime(byId3.getCreateTime());
- payOrderInfoDto3.setRechargeAmount(byId3.getPayment());
- return R.ok(payOrderInfoDto3);
+ case 4:
+ R<TParkingRecord> recordById = parkingLotClient.getRecordById(orderId);
+ TParkingRecord byId3 = recordById.getData();
+ PayOrderInfoDto payOrderInfoDto3 = new PayOrderInfoDto();
+ payOrderInfoDto3.setOrderId(byId3.getId().toString());
+ payOrderInfoDto3.setCode(byId3.getCode());
+ payOrderInfoDto3.setPayTime(byId3.getCreateTime());
+ payOrderInfoDto3.setRechargeAmount(byId3.getPayment());
+ return R.ok(payOrderInfoDto3);
-
- }
+ }
return R.ok();
}
-
-
@ResponseBody
+ @RequiresPermissions(value = {"/paymentOrder/refund", "/paymentOrder/refund/select"}, logical = Logical.OR)
@GetMapping(value = "/pay/order/refund/detail")
@ApiOperation(value = "退款信息", tags = {"管理后台-支付订单-订单信息"})
public R refundDetail(Long orderId, Integer type) {
@@ -394,6 +341,7 @@
}
@ResponseBody
+ @RequiresPermissions(value = {"/paymentOrder/order"}, logical = Logical.OR)
@GetMapping(value = "/pay/order/charging")
@ApiOperation(value = "充电信息", tags = {"管理后台-支付订单-订单信息"})
public R<PayOrderChargingInfo> refundDetail(Long orderId) {
@@ -405,22 +353,17 @@
payOrderChargingInfo.setChargingName(data1.getName());
TChargingGun data2 = chargingGunClient.getChargingGunById(byId.getChargingGunId()).getData();
payOrderChargingInfo.setGunName(data2.getName());
- if (byId.getAppUserCarId()!=null) {
- List<TAppUserCar> data3 = appUserCarClient.getCarByIds(Collections.singletonList(byId.getAppUserCarId())).getData();
- payOrderChargingInfo.setCarNum(data3.get(0).getLicensePlate());
- }else{
- payOrderChargingInfo.setCarNum(byId.getPlateNum());
- }
+ payOrderChargingInfo.setCarNum(byId.getPlateNum());
payOrderChargingInfo.setTChargingOrder(byId);
Long count = chargingOrderAccountingStrategyService.lambdaQuery().eq(TChargingOrderAccountingStrategy::getChargingOrderId, orderId).count();
payOrderChargingInfo.setPeriodCount(count);
- if (byId.getAppUserCarId()!=null) {
+ if (byId.getAppUserCarId() != null && 0 != byId.getAppUserCarId()) {
List<Long> carid = new ArrayList<>();
carid.add(byId.getAppUserCarId());
R<List<TAppUserCar>> carByIds = appUserCarClient.getCarByIds(carid);
payOrderChargingInfo.setCarNum(carByIds.getData().get(0).getLicensePlate());
- }else{
+ } else {
payOrderChargingInfo.setCarNum(byId.getPlateNum());
}
payOrderChargingInfo.setStartTime(byId.getStartTime());
@@ -430,6 +373,7 @@
}
@ResponseBody
+ @RequiresPermissions(value = {"/paymentOrder/order"}, logical = Logical.OR)
@GetMapping(value = "/pay/order/charging/details")
@ApiOperation(value = "充电明细", tags = {"管理后台-支付订单-订单信息"})
public R<List<TChargingOrderAccountingStrategy>> chargingDetail(Long orderId) {
@@ -441,12 +385,12 @@
LocalDateTime createTime = chargingOrder.getStartTime();
String format = createTime.format(formatter);
String startTime = tChargingOrderAccountingStrategy.getStartTime();
- if("00:00".equals(startTime)){
+ if ("00:00".equals(startTime)) {
createTime = createTime.plusDays(1);
format = createTime.format(formatter);
}
- tChargingOrderAccountingStrategy.setStartTime(format+" "+tChargingOrderAccountingStrategy.getStartTime());
- tChargingOrderAccountingStrategy.setEndTime(format+" "+tChargingOrderAccountingStrategy.getEndTime());
+ tChargingOrderAccountingStrategy.setStartTime(format + " " + tChargingOrderAccountingStrategy.getStartTime());
+ tChargingOrderAccountingStrategy.setEndTime(format + " " + tChargingOrderAccountingStrategy.getEndTime());
}
//从新排序
list.sort(new Comparator<TChargingOrderAccountingStrategy>() {
@@ -456,10 +400,10 @@
String startTime1 = o2.getStartTime();
LocalDateTime localDateTime = LocalDateTime.parse(startTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"));
LocalDateTime localDateTime1 = LocalDateTime.parse(startTime1, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"));
- if(localDateTime.isBefore(localDateTime1)){
+ if (localDateTime.isBefore(localDateTime1)) {
return -1;
}
- if(localDateTime.isAfter(localDateTime1)){
+ if (localDateTime.isAfter(localDateTime1)) {
return 1;
}
return 0;
@@ -467,9 +411,8 @@
});
return R.ok(list);
}
-
-
-
+
+
@RequiresPermissions(value = {"/paymentOrder/refund"}, logical = Logical.OR)
@ResponseBody
@PostMapping(value = "/pay/order/refund/list")
@@ -484,14 +427,14 @@
Long userId = tokenService.getLoginUser().getUserid();
//如果没传siteId,获取当前登陆人所有的siteIds
List<Integer> siteIds = new ArrayList<>();
- if (userId != null){
- List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData();
- for (GetSiteListDTO datum : data) {
- siteIds.add(datum.getId());
- }
+ if (userId != null) {
+ List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData();
+ for (GetSiteListDTO datum : data) {
+ siteIds.add(datum.getId());
}
+ }
- if (siteIds.isEmpty()){
+ if (siteIds.isEmpty()) {
siteIds.add(-1);
}
// 查询当前登陆人按钮权限
@@ -499,19 +442,19 @@
Integer roleType = sysUser.getRoleType();
List<TChargingOrderRefund> tChargingOrderRefunds = new ArrayList<>();
for (TChargingOrderRefund record : refundList1.getData().getRecords()) {
- if (roleType==1){
+ if (roleType == 1) {
tChargingOrderRefunds.add(record);
continue;
}
- if (record.getType()!=1){
+ if (record.getType() != 1) {
tChargingOrderRefunds.add(record);
}
TChargingOrder byId = chargingOrderService.getById(record.getOrderId());
record.setUid(record.getId().toString());
- if (byId==null){
+ if (byId == null) {
continue;
}
- if (roleType==2&&siteIds.contains(byId.getSiteId())){
+ if (roleType == 2 && siteIds.contains(byId.getSiteId())) {
tChargingOrderRefunds.add(record);
}
@@ -524,11 +467,9 @@
return refundList1;
}
-
-
-
-
- public static List<TChargingOrderRefund> testing4(long total, long current, long size, List<TChargingOrderRefund> str){
+
+
+ public static List<TChargingOrderRefund> testing4(long total, long current, long size, List<TChargingOrderRefund> str) {
List<TChargingOrderRefund> result = new ArrayList<>();
//获取初始化分页结构
com.ruoyi.order.util.Page<TChargingOrderRefund> page = new com.ruoyi.order.util.Page().getPage(total, size, current - 1);
@@ -536,21 +477,19 @@
long startIndex = page.getStartIndex();
//获取集合下标结束值
long endInddex = 0;
- if(startIndex + page.getCurrent() >= total || size > total){
+ if (startIndex + page.getCurrent() >= total || size > total) {
endInddex = total;
- }else {
+ } else {
endInddex = Math.min(startIndex + page.getSize(), total);
}
//如果输入的开始查询下标大于集合大小,则查询为空值
- if(startIndex > total){
+ if (startIndex > total) {
result = Collections.emptyList();
- }else{
- result = str.subList((int)startIndex,(int)endInddex);
+ } else {
+ result = str.subList((int) startIndex, (int) endInddex);
}
return result;
}
-
-
@ResponseBody
@@ -560,12 +499,8 @@
return chargingOrderService.getRefundList(chargingRefundDto);
}
-
-
-
-
-
-
+
+
@RequiresPermissions(value = {"/chargingPileOrder"}, logical = Logical.OR)
@ResponseBody
@PostMapping(value = "/chargingOrder")
@@ -578,6 +513,16 @@
}
+ @RequiresPermissions(value = {"/chargingPileOrder"}, logical = Logical.OR)
+ @ResponseBody
+ @PostMapping(value = "/balanceIncomeDetail")
+ @ApiOperation(value = "充电桩订单余额收入明细", tags = {"管理后台-订单管理"})
+ public AjaxResult<List<ChargingOrderBalanceIncomeDetailVO>> balanceIncomeDetail(@RequestBody ChargingOrderQuery dto) {
+ List<ChargingOrderBalanceIncomeDetailVO> res = chargingOrderService.balanceIncomeDetail(dto);
+ return AjaxResult.success(res);
+ }
+
+
@RequiresPermissions(value = {"/chargingPileOrder/monitoring_record"}, logical = Logical.OR)
@ResponseBody
@GetMapping(value = "/chargingOrderInfo")
@@ -585,19 +530,19 @@
public AjaxResult<ChargingOrderInfoVO> chargingOrderInfo(String strategyId) {
TChargingOrder byId = chargingOrderService.getById(strategyId);
ChargingOrderInfoVO chargingOrderInfoVO = new ChargingOrderInfoVO();
- chargingOrderInfoVO.setCdElectronic(byId.getCurrent()!=null?byId.getCurrent().setScale(2, BigDecimal.ROUND_HALF_DOWN)+"":"");
- chargingOrderInfoVO.setCdVoltage(byId.getVoltage()!=null?byId.getVoltage().setScale(2, BigDecimal.ROUND_HALF_DOWN)+"":"");
- chargingOrderInfoVO.setSurplus(byId.getTotalElectricity()!=null?byId.getTotalElectricity().setScale(2, BigDecimal.ROUND_HALF_DOWN)+"":"");
- chargingOrderInfoVO.setTotalPower(byId.getPower()!=null?byId.getPower().setScale(2, BigDecimal.ROUND_HALF_DOWN)+"":"");
- if (byId.getAppUserCarId()!=null){
- TAppUserCar data = appUserCarClient.getCarById(byId.getAppUserCarId()+"").getData();
- if (data!=null){
+ chargingOrderInfoVO.setCdElectronic(byId.getCurrent() != null ? byId.getCurrent().setScale(2, BigDecimal.ROUND_HALF_DOWN) + "" : "");
+ chargingOrderInfoVO.setCdVoltage(byId.getVoltage() != null ? byId.getVoltage().setScale(2, BigDecimal.ROUND_HALF_DOWN) + "" : "");
+ chargingOrderInfoVO.setSurplus(byId.getTotalElectricity() != null ? byId.getTotalElectricity().setScale(2, BigDecimal.ROUND_HALF_DOWN) + "" : "");
+ chargingOrderInfoVO.setTotalPower(byId.getPower() != null ? byId.getPower().setScale(2, BigDecimal.ROUND_HALF_DOWN) + "" : "");
+ if (byId.getAppUserCarId() != null) {
+ TAppUserCar data = appUserCarClient.getCarById(byId.getAppUserCarId() + "").getData();
+ if (data != null) {
chargingOrderInfoVO.setLicensePlate(data.getLicensePlate());
chargingOrderInfoVO.setVehicleBrand(data.getVehicleBrand());
chargingOrderInfoVO.setVehicleModel(data.getVehicleModel());
chargingOrderInfoVO.setVehicleUse(data.getVehicleUse());
}
- }else{
+ } else {
chargingOrderInfoVO.setLicensePlate(byId.getPlateNum());
}
// 时段总服务费
@@ -607,21 +552,24 @@
LocalDateTime createTime = byId.getStartTime();
String format = createTime.format(formatter);
String startTime = tChargingOrderAccountingStrategy.getStartTime();
- if("00:00".equals(startTime)){
+ if ("00:00".equals(startTime)) {
createTime = createTime.plusDays(1);
format = createTime.format(formatter);
}
- tChargingOrderAccountingStrategy.setStartTime(format+" "+tChargingOrderAccountingStrategy.getStartTime());
- tChargingOrderAccountingStrategy.setEndTime(format+" "+tChargingOrderAccountingStrategy.getEndTime());
- if (byId.getVipDiscountAmount()!=null && byId.getServiceCharge().compareTo(BigDecimal.ZERO) != 0){
- BigDecimal multiply = byId.getVipDiscountAmount().divide(byId.getServiceCharge(), 2)
- .multiply(tChargingOrderAccountingStrategy.getPeriodOriginalServicePrice());
- tChargingOrderAccountingStrategy.setVipDiscount(multiply);
- }
- if (byId.getCouponDiscountAmount()!=null && byId.getServiceCharge().compareTo(BigDecimal.ZERO) != 0){
- BigDecimal multiply = byId.getCouponDiscountAmount().divide(byId.getServiceCharge(), 2)
- .multiply(tChargingOrderAccountingStrategy.getPeriodOriginalServicePrice());
- tChargingOrderAccountingStrategy.setCouponDiscount(multiply);
+ tChargingOrderAccountingStrategy.setStartTime(format + " " + tChargingOrderAccountingStrategy.getStartTime());
+ tChargingOrderAccountingStrategy.setEndTime(format + " " + tChargingOrderAccountingStrategy.getEndTime());
+// if (byId.getVipDiscountAmount()!=null && byId.getServiceCharge().compareTo(BigDecimal.ZERO) != 0){
+// BigDecimal multiply = byId.getVipDiscountAmount().divide(byId.getServiceCharge(), 2)
+// .multiply(tChargingOrderAccountingStrategy.getPeriodOriginalServicePrice());
+// tChargingOrderAccountingStrategy.setVipDiscount(multiply);
+// }
+// if (byId.getCouponDiscountAmount()!=null && byId.getServiceCharge().compareTo(BigDecimal.ZERO) != 0){
+// BigDecimal multiply = byId.getCouponDiscountAmount().divide(byId.getServiceCharge(), 2)
+// .multiply(tChargingOrderAccountingStrategy.getPeriodOriginalServicePrice());
+// tChargingOrderAccountingStrategy.setCouponDiscount(multiply);
+// }
+ if (null == tChargingOrderAccountingStrategy.getCouponDiscount()) {
+ tChargingOrderAccountingStrategy.setCouponDiscount(BigDecimal.ZERO);
}
}
//从新排序
@@ -632,10 +580,10 @@
String startTime1 = o2.getStartTime();
LocalDateTime localDateTime = LocalDateTime.parse(startTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"));
LocalDateTime localDateTime1 = LocalDateTime.parse(startTime1, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"));
- if(localDateTime.isBefore(localDateTime1)){
+ if (localDateTime.isBefore(localDateTime1)) {
return -1;
}
- if(localDateTime.isAfter(localDateTime1)){
+ if (localDateTime.isAfter(localDateTime1)) {
return 1;
}
return 0;
@@ -644,11 +592,9 @@
chargingOrderInfoVO.setList(list);
return AjaxResult.success(chargingOrderInfoVO);
}
-
-
-
-
- @Log(title = "【扫一扫】添加评价", businessType = BusinessType.INSERT,operatorType = OperatorType.MOBILE)
+
+
+ @Log(title = "【扫一扫】添加评价", businessType = BusinessType.INSERT, operatorType = OperatorType.MOBILE)
@ResponseBody
@PostMapping(value = "/addEvaluate")
@ApiOperation(value = "添加评价", tags = {"小程序-扫一扫"})
@@ -657,9 +603,8 @@
orderEvaluateService.addOrderEvaluate(dto);
return AjaxResult.success();
}
-
-
-
+
+
/**
* 查询用户最近一次充电记录使用的车辆
*
@@ -667,24 +612,23 @@
* @return
*/
@GetMapping(value = "/getCar/{id}")
- public R<Long> getCar(@PathVariable("id")String id) {
+ public R<Long> getCar(@PathVariable("id") String id) {
List<TChargingOrder> list = chargingOrderService.list(new LambdaQueryWrapper<TChargingOrder>()
.eq(TChargingOrder::getAppUserId, id)
.isNotNull(TChargingOrder::getAppUserCarId));
- if (!list.isEmpty()){
+ if (!list.isEmpty()) {
// 最近使用的车辆id
Long size = list.get(0).getAppUserCarId();
return R.ok(size);
- }else{
+ } else {
return R.ok(-1L);
}
}
-
-
-
+
/**
* 查询会员在本月有多少次享受了充电折扣
+ *
* @param req
* @return
*/
@@ -707,13 +651,11 @@
}
-
//订单详情
@PostMapping(value = "/detail")
public R<TChargingOrder> detail(@RequestParam("orderId") Long orderId) {
return R.ok(chargingOrderService.getById(orderId));
}
-
@PostMapping(value = "/getList")
@@ -722,7 +664,6 @@
List<TChargingOrder> list = chargingOrderService.lambdaQuery().eq(TChargingOrder::getSiteId, siteId).list();
return R.ok(list);
}
-
@PostMapping(value = "/getBySiteIdAndTime")
@@ -735,11 +676,12 @@
/**
* 根据站点id和时间区间查询订单数据
+ *
* @param chargingPercentProvinceDto
* @return
*/
@PostMapping(value = "/getOrderBySiteIdAndTime")
- public R<List<TChargingOrder>> getOrderBySiteIdAndTime(@RequestBody ChargingPercentProvinceDto chargingPercentProvinceDto){
+ public R<List<TChargingOrder>> getOrderBySiteIdAndTime(@RequestBody ChargingPercentProvinceDto chargingPercentProvinceDto) {
LocalDate date1 = chargingPercentProvinceDto.getDate1();
LocalDate date2 = chargingPercentProvinceDto.getDate2();
String tripartitePlatformName = chargingPercentProvinceDto.getTripartitePlatformName();
@@ -752,9 +694,9 @@
}
-
/**
* 根据充电枪id获取正在进行中的订单
+ *
* @param chargingGunId 充电枪id
* @return
*/
@@ -764,10 +706,8 @@
.eq(TChargingOrder::getDelFlag, 0).eq(TChargingOrder::getStatus, 3));
return R.ok(one);
}
-
-
-
-
+
+
@ResponseBody
@GetMapping(value = "/getMyChargingOrderList")
@ApiOperation(value = "获取充电记录列表", tags = {"小程序-充电记录"})
@@ -775,23 +715,22 @@
Map<String, Object> orderList = chargingOrderService.getMyChargingOrderList(query);
return AjaxResult.success(orderList);
}
-
-
+
+
@ResponseBody
@GetMapping(value = "/getMyChargingOrderInfo")
@ApiOperation(value = "获取充电记订单明细", tags = {"小程序-充电记录"})
public AjaxResult<MyChargingOrderInfo> getMyChargingOrderInfo(String id) {
TChargingOrder tChargingOrder = chargingOrderService.getById(id);
Long userId = tokenService.getLoginUserApplet().getUserId();
- if(!tChargingOrder.getAppUserId().equals(userId)){
+ if (!tChargingOrder.getAppUserId().equals(userId)) {
return AjaxResult.error("权限不足");
}
MyChargingOrderInfo myChargingOrderInfo = chargingOrderService.getMyChargingOrderInfo(id);
return AjaxResult.success(myChargingOrderInfo);
}
-
-
-
+
+
@ResponseBody
@GetMapping(value = "/getNoInvoicedOrder")
@ApiOperation(value = "获取未开票的订单数据", tags = {"小程序-充电发票"})
@@ -799,16 +738,16 @@
List<MyChargingOrderList> list = chargingOrderService.getNoInvoicedOrder(query);
return AjaxResult.success(list);
}
-
-
- @Log(title = "【扫一扫】支付充电充值费用", businessType = BusinessType.UPDATE,operatorType = OperatorType.MOBILE)
+
+
+ @Log(title = "【扫一扫】支付充电充值费用", businessType = BusinessType.UPDATE, operatorType = OperatorType.MOBILE)
@ResponseBody
@PostMapping(value = "/paymentChargingOrder")
@ApiOperation(value = "支付充电充值费用", tags = {"小程序-扫一扫"})
public AjaxResult paymentChargingOrder(@RequestBody AddChargingOrder addChargingOrder) {
return chargingOrderService.paymentChargingOrder(addChargingOrder);
}
-
+
/**
* 充电充值支付回调
*/
@@ -818,31 +757,32 @@
@RequestParam("attach") String attach) {
chargingOrderService.chargingOrderCallback(1, out_trade_no, transaction_id, attach);
}
-
-
+
+
/**
* 修改安全检测数据
+ *
* @param securityDetection
*/
@ResponseBody
@PostMapping(value = "/securityDetection")
- public void securityDetection(@RequestBody SecurityDetectionVO securityDetection){
+ public void securityDetection(@RequestBody SecurityDetectionVO securityDetection) {
log.info("-------------------安全检测数据-------------------:" + securityDetection);
chargingOrderService.securityDetection(securityDetection);
}
-
+
/**
* 远程启动充电应答
+ *
* @param message
*/
@ResponseBody
@PostMapping(value = "/startChargeSuccessfully")
- public void startChargeSuccessfully(@RequestBody PlatformStartChargingReplyMessageVO message){
+ public void startChargeSuccessfully(@RequestBody PlatformStartChargingReplyMessageVO message) {
log.info("-------------------远程启动充电请求应答-------------------:" + message);
chargingOrderService.startChargeSuccessfully(message);
}
-
-
+
/**
* 支付宝支付成功后的回调
@@ -854,43 +794,47 @@
@RequestParam("attach") String attach) {
chargingOrderService.chargingOrderCallback(2, out_trade_no, transaction_id, attach);
}
+
/**
* 支付宝H5支付成功后的回调
*/
@ResponseBody
@PostMapping(value = "/chargingOrderALIH5Callback")
public void chargingOrderALIH5Callback(@RequestParam("out_trade_no") String out_trade_no,
- @RequestParam("transaction_id") String transaction_id,
- @RequestParam("attach") String attach) {
+ @RequestParam("transaction_id") String transaction_id,
+ @RequestParam("attach") String attach) {
chargingOrderService.chargingOrderCallback(3, out_trade_no, transaction_id, attach);
}
-
+
/**
*
* @param code
*/
@ResponseBody
@PostMapping(value = "/refund")
- public R refund(@RequestParam(value = "code") String code){
+ public R refund(@RequestParam(value = "code") String code) {
+ List<UploadRealTimeMonitoringData> dataByOrderCode = uploadRealTimeMonitoringDataService.getDataByOrderCode(code);
+ if (!dataByOrderCode.isEmpty()) {
+ return R.fail("订单有充电数据,无法全额退款");
+ }
chargingOrderService.refund(code);
return R.ok();
}
-
-
+
+
/**
*
* @param code
*/
@ResponseBody
@PostMapping(value = "/refund1")
- public R refund1(@RequestParam(value = "code") String code, @RequestParam(value = "money") BigDecimal money){
+ public R refund1(@RequestParam(value = "code") String code, @RequestParam(value = "money") BigDecimal money) {
chargingOrderService.refund1(code, money);
return R.ok();
}
-
-
-
+
+
/**
* 远程启动失败后退款回调
*/
@@ -899,13 +843,11 @@
public void chargingOrderStartupFailureWxRefund(@RequestParam("out_refund_no") String out_refund_no,
@RequestParam("refund_id") String refund_id,
@RequestParam("tradeState") String tradeState,
- @RequestParam("success_time") String success_time){
+ @RequestParam("success_time") String success_time) {
chargingOrderService.chargingOrderStartupFailureWxRefund(out_refund_no, refund_id, tradeState, success_time);
}
-
-
-
-
+
+
@ResponseBody
@GetMapping(value = "/preChargeCheck/{id}")
@ApiOperation(value = "获取安全检测数据", tags = {"小程序-扫一扫"})
@@ -914,11 +856,17 @@
})
public AjaxResult<PreChargeCheck> preChargeCheck(@PathVariable Integer id) {
String key = "AQJC_" + id;
- Object cacheObject = redisService.getCacheObject(key);
+ PreChargeCheck cacheObject = redisService.getCacheObject(key);
+ if (null != cacheObject) {
+ if (LocalDateTime.now().minusMinutes(1).isAfter(cacheObject.getAddTime())) {
+ redisService.deleteObject(key);
+ cacheObject = null;
+ }
+ }
return AjaxResult.success(cacheObject);
}
-
-
+
+
@ResponseBody
@GetMapping(value = "/getChargingDetails/{id}")
@ApiOperation(value = "获取充电中页面数据", tags = {"小程序-扫一扫"})
@@ -929,8 +877,9 @@
ChargingDetails chargingDetails = chargingOrderService.getChargingDetails(id);
return AjaxResult.success(chargingDetails);
}
-
- @Log(title = "【扫一扫】手动停止充电", businessType = BusinessType.STOP,operatorType = OperatorType.MOBILE)
+
+
+ @Log(title = "【扫一扫】手动停止充电", businessType = BusinessType.STOP, operatorType = OperatorType.MOBILE)
@ResponseBody
@PutMapping(value = "/stopCharging/{id}")
@ApiOperation(value = "手动停止充电", tags = {"小程序-扫一扫"})
@@ -938,62 +887,51 @@
@ApiImplicitParam(name = "id", value = "订单id", required = true)
})
public AjaxResult stopCharging(@PathVariable String id) {
+ log.info("小程序主动发起停止充电,订单ID:{}", id);
return chargingOrderService.stopCharging(id);
}
-
-
+
+
/**
* 停止充电应答处理逻辑
+ *
* @param platformStopChargingReply
*/
@PostMapping("/terminateSuccessfulResponse")
- public void terminateSuccessfulResponse(@RequestBody PlatformStopChargingReplyVO platformStopChargingReply){
+ public void terminateSuccessfulResponse(@RequestBody PlatformStopChargingReplyVO platformStopChargingReply) {
log.info("-------------------远程停止充电请求应答-------------------:" + platformStopChargingReply);
chargingOrderService.terminateSuccessfulResponse(platformStopChargingReply);
}
-
-
+
+
/**
* 停止充电返回账单后计算费用
+ *
* @param vo
*/
@PostMapping("/endChargeBillingCharge")
- public R endChargeBillingCharge(@RequestBody TransactionRecordMessageVO vo){
+ public R endChargeBillingCharge(@RequestBody TransactionRecordMessageVO vo) {
log.info("-------------------停止充电返回账单后计算费用及修改业务状态-------------------:" + vo);
return chargingOrderService.endChargeBillingCharge(vo);
}
-
-
-
-
+
@RequiresPermissions(value = {"/platformRevenueAnalysis"}, logical = Logical.OR)
@ResponseBody
@GetMapping(value = "/six/charge")
@ApiOperation(value = "电站收入分析", tags = {"后台-数据分析-平台收入分析"})
public R<List<SixChargingDto>> charge(Integer siteId) {
Long userId = tokenService.getLoginUser().getUserid();
- //如果没传siteId,获取当前登陆人所有的siteIds
- List<Integer> siteIds = new ArrayList<>();
- if (siteId==null){
- List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData();
- for (GetSiteListDTO datum : data) {
- siteIds.add(datum.getId());
- }
- }else {
- siteIds.add(siteId);
- }
- if (siteIds.isEmpty()){
- siteIds.add(-1);
- }
+ SysUser sysUser = sysUserClient.getSysUser(userId).getData();
+ List<Integer> siteIds = resolvePlatformRevenueSiteIds(userId, sysUser, siteId);
LocalDate sixBefore = PreviousSixMonths.get();
//通过siteIds进行sql查询统计
List<SixChargingDto> sixChargingDtos = generateLastSixMonths();
List<SixChargingDto> chargingDtos = chargingOrderService.charge(sixBefore, siteIds);
for (SixChargingDto sixChargingDto : sixChargingDtos) {
for (SixChargingDto chargingDto : chargingDtos) {
- if (sixChargingDto.getMonth().equals(chargingDto.getMonth())){
- BeanUtils.copyProperties(chargingDto,sixChargingDto);
+ if (sixChargingDto.getMonth().equals(chargingDto.getMonth())) {
+ BeanUtils.copyProperties(chargingDto, sixChargingDto);
}
}
@@ -1019,25 +957,17 @@
return months;
}
-
+
@RequiresPermissions(value = {"/platformRevenueAnalysis"}, logical = Logical.OR)
@ResponseBody
@GetMapping(value = "/six/circle")
@ApiOperation(value = "电站收入占比", tags = {"后台-数据分析-平台收入分析"})
public R<List<SixCircleDto>> circle() {
Long userId = tokenService.getLoginUser().getUserid();
- //获取当前登录的siteIds
- List<Integer> siteIds = new ArrayList<>();
- List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData();
- for (GetSiteListDTO datum : data) {
- siteIds.add(datum.getId());
- }
- //进行统计groupBySiteId
+ SysUser sysUser = sysUserClient.getSysUser(userId).getData();
+ List<Integer> siteIds = resolvePlatformRevenueSiteIds(userId, sysUser, null);
LocalDate sixBefore = PreviousSixMonths.get();
- if (siteIds.isEmpty()){
- siteIds.add(-1);
- }
- List<SixCircleDto> sixCircleDtos = chargingOrderService.circle(siteIds,sixBefore);
+ List<SixCircleDto> sixCircleDtos = chargingOrderService.circle(siteIds, sixBefore);
for (SixCircleDto sixCircleDto : sixCircleDtos) {
Site site = siteClient.getSiteByIds(Arrays.asList(sixCircleDto.getSiteId())).getData().get(0);
sixCircleDto.setSiteName(site.getName());
@@ -1045,8 +975,8 @@
return R.ok(sixCircleDtos);
}
-
-
+
+
@RequiresPermissions(value = {"/platformRevenueAnalysis"}, logical = Logical.OR)
@ResponseBody
@GetMapping(value = "/six/shop")
@@ -1054,12 +984,12 @@
public R<List<SixShopDto>> shop(Integer status) {
//count近6个月的数据
LocalDate sixBefore = PreviousSixMonths.get();
- List<SixShopDto> sixShopDtos = shoppingOrderService.sixBefore(sixBefore,status);
+ List<SixShopDto> sixShopDtos = shoppingOrderService.sixBefore(sixBefore, status);
List<SixShopDto> sixChargingDtos = generateLastSixMonths1();
for (SixShopDto sixChargingDto : sixChargingDtos) {
for (SixShopDto chargingDto : sixShopDtos) {
- if (sixChargingDto.getMonth().equals(chargingDto.getMonth())){
- BeanUtils.copyProperties(chargingDto,sixChargingDto);
+ if (sixChargingDto.getMonth().equals(chargingDto.getMonth())) {
+ BeanUtils.copyProperties(chargingDto, sixChargingDto);
}
}
@@ -1083,8 +1013,8 @@
return months;
}
-
-
+
+
@RequiresPermissions(value = {"/workbench"}, logical = Logical.OR)
@ResponseBody
@PostMapping(value = "/work/shop")
@@ -1092,10 +1022,10 @@
public R workShop(@RequestBody ChargingStatisticsQueryDto statisticsQueryDto) {
//count近6个月的数据
LocalDate sixBefore = PreviousSixMonths.get();
- List<Map<String,Object >> shopData = shoppingOrderService.getData(statisticsQueryDto);
+ List<Map<String, Object>> shopData = shoppingOrderService.getData(statisticsQueryDto);
return R.ok(shopData);
}
-
+
@RequiresPermissions(value = {"/platformRevenueAnalysis"}, logical = Logical.OR)
@ResponseBody
@GetMapping(value = "/six/vip")
@@ -1103,79 +1033,85 @@
public R<List<SixVipDto>> vip() {
//count近6个月的数据
LocalDate sixBefore = PreviousSixMonths.get();
- List<SixVipDto> vipDtos = vipOrderService.sixBefore(sixBefore);
+ List<SixVipDto> vipDtos = vipOrderService.sixBefore(sixBefore);
return R.ok(vipDtos);
}
-
-
-
-
-
-
+
+
+ /**
+ * 查询平台收入分析底部数据分类,充电订单金额由数据库聚合,避免全量订单和计费明细加载超时。
+ */
@RequiresPermissions(value = {"/platformRevenueAnalysis"}, logical = Logical.OR)
@ResponseBody
@GetMapping(value = "/six/total")
@ApiOperation(value = "底部数据分类", tags = {"后台-数据分析-平台收入分析"})
- public R<Map<String,Object>> total() {
+ public R<Map<String, Object>> total() {
//count近6个月的数据
Long userId = tokenService.getLoginUser().getUserid();
SysUser sysUser = sysUserClient.getSysUser(userId).getData();
- //获取当前登录的siteIds
- List<Integer> siteIds = new ArrayList<>();
- List<GetSiteListDTO> data9 = siteClient.getSiteListByUserId(userId).getData();
- for (GetSiteListDTO datum : data9) {
- siteIds.add(datum.getId());
- }
- //进行统计groupBySiteId
- if (siteIds.isEmpty()){
- siteIds.add(-1);
- }
- Map<String,Object> map = chargingOrderService.countAll(siteIds);
- if(1 == sysUser.getObjectId()){
+ List<Integer> siteIds = resolvePlatformRevenueSiteIds(userId, sysUser, null);
+ Map<String, Object> map = chargingOrderService.countAll(siteIds);
+ boolean platformVisible = 1 == sysUser.getObjectId();
+ if (platformVisible) {
BigDecimal data = parkingLotClient.getRecordAmount().getData();
- if (map ==null){
- map = new HashMap<String,Object>();
+ if (map == null) {
+ map = new HashMap<String, Object>();
}
- map.put("parkingAmount",data);
- BigDecimal data1 = shoppingOrderService.getSumAmount();
- map.put("shopAmount",data1);
- BigDecimal data2 = vipOrderService.getSumAmout();
- map.put("vipAmount",data2);
- }else{
- map.put("parkingAmount",0);
- map.put("shopAmount",0);
- map.put("vipAmount",0);
+ map.put("parkingAmount", data);
+ BigDecimal data1 = shoppingOrderService.getSumAmount();
+ map.put("shopAmount", data1);
+ BigDecimal data2 = vipOrderService.getSumAmout();
+ map.put("vipAmount", data2);
+ } else {
+ map.put("parkingAmount", 0);
+ map.put("shopAmount", 0);
+ map.put("vipAmount", 0);
}
- List<TChargingOrder> list = chargingOrderService.lambdaQuery().eq(TChargingOrder::getStatus, 5).eq(TChargingOrder::getDelFlag, 0)
- .eq(TChargingOrder::getRechargePaymentStatus, 2).in(TChargingOrder::getSiteId, siteIds).list();
- BigDecimal sharingAmount = BigDecimal.ZERO;
- BigDecimal commissionAmount = BigDecimal.ZERO;
- //计算list中electrovalence的总和
- BigDecimal totalElectrovalence = BigDecimal.ZERO;
- //计算list中serviceCharge的总和
- BigDecimal totalServiceCharge = BigDecimal.ZERO;
- List<TChargingOrderAccountingStrategy> accountingStrategyList = chargingOrderAccountingStrategyService.list();
- for (TChargingOrder order : list) {
- List<TChargingOrderAccountingStrategy> collect = accountingStrategyList.stream().filter(s -> s.getChargingOrderId().equals(order.getId())).collect(Collectors.toList());
- BigDecimal periodElectricPrice = collect.stream().map(TChargingOrderAccountingStrategy::getPeriodElectricPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
- BigDecimal periodServicePrice = collect.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
- totalElectrovalence = totalElectrovalence.add(periodElectricPrice);
- if(2 != order.getOrderSource()){
- totalServiceCharge = totalServiceCharge.add(periodServicePrice);
- commissionAmount = commissionAmount.add((periodElectricPrice.add(periodServicePrice)).multiply(new BigDecimal("0.006")));
- }else{
- totalServiceCharge = totalServiceCharge.add(periodServicePrice.multiply(new BigDecimal("0.8")));
- sharingAmount = sharingAmount.add(periodServicePrice.multiply(new BigDecimal("0.2")));
- }
- }
- map.put("service_charge",totalServiceCharge.setScale(2, BigDecimal.ROUND_HALF_EVEN));
- map.put("electrovalence",totalElectrovalence.setScale(2, BigDecimal.ROUND_HALF_EVEN));
- map.put("commission_amount",commissionAmount.setScale(2, BigDecimal.ROUND_HALF_EVEN));
- map.put("sharing_amount",sharingAmount.setScale(2, BigDecimal.ROUND_HALF_EVEN));
+ map.put("platformIncomeVisible", platformVisible);
return R.ok(map);
}
-
+ @RequiresPermissions(value = {"/platformRevenueAnalysis"}, logical = Logical.OR)
+ @ResponseBody
+ @GetMapping(value = "/six/pay-type-circle")
+ @ApiOperation(value = "收入类型占比", tags = {"后台-数据分析-平台收入分析"})
+ public R<List<SixIncomeCircleDto>> payTypeCircle() {
+ Long userId = tokenService.getLoginUser().getUserid();
+ SysUser sysUser = sysUserClient.getSysUser(userId).getData();
+ List<Integer> siteIds = resolvePlatformRevenueSiteIds(userId, sysUser, null);
+ LocalDate sixBefore = PreviousSixMonths.get();
+ return R.ok(chargingOrderService.payTypeCircle(sixBefore, siteIds));
+ }
+
+ /**
+ * 解析平台收入分析页面允许查看的站点范围。
+ * 合作商使用授权站点,其他后台账号沿用用户站点列表;传入站点时需做授权校验。
+ */
+ private List<Integer> resolvePlatformRevenueSiteIds(Long userId, SysUser sysUser, Integer siteId) {
+ List<Integer> siteIds = new ArrayList<>();
+ if (sysUser != null && Integer.valueOf(2).equals(sysUser.getRoleType())) {
+ Set<Integer> authSiteIds = partnerClient.authSite(sysUser.getObjectId(), SiteMenu.SITE_LIST.getValue()).getData();
+ if (authSiteIds != null) {
+ siteIds.addAll(authSiteIds);
+ }
+ } else {
+ List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData();
+ if (data != null) {
+ for (GetSiteListDTO datum : data) {
+ siteIds.add(datum.getId());
+ }
+ }
+ }
+ if (siteId != null) {
+ return siteIds.contains(siteId) ? Collections.singletonList(siteId) : Collections.singletonList(-1);
+ }
+ if (siteIds.isEmpty()) {
+ siteIds.add(-1);
+ }
+ return siteIds;
+ }
+
+
@RequiresPermissions(value = {"/chargeOrderMonitoring"}, logical = Logical.OR)
@ResponseBody
@PostMapping(value = "/watch/chargingOrder")
@@ -1188,22 +1124,22 @@
Integer objectId = sysUser.getObjectId();
R<Integer> admin = sysUserClient.isAdmin(tokenService.getLoginUser().getUserid());
//合作商
- if(roleType == 2){
+ if (roleType == 2) {
ids = partnerClient.authSite(objectId, SiteMenu.SITE_LIST.getValue()).getData();
- }else{
+ } else {
//非管理员需要根据角色和用户配置查询允许的站点数据
//改用roleId=1来判断
- if(admin.getData()!=1){
+ if (admin.getData() != 1) {
List<Integer> data = userSiteClient.getSiteIds(sysUser.getUserId()).getData();
List<SysUserRoleVo> data2 = sysUserRoleClient.getRoleByUserId(sysUser.getUserId()).getData();
- if(data2.size() > 0){
+ if (data2.size() > 0) {
List<Integer> data1 = roleSiteClient.getSiteIds(data2.get(0).getRoleId()).getData();
data.addAll(data1);
}
ids = new HashSet<>(data);
}
}
-
+
LambdaQueryWrapper<TChargingOrder> queryWrapper = new LambdaQueryWrapper<TChargingOrder>().like(StringUtils.isNotEmpty(query.getCode()), TChargingOrder::getCode, query.getCode())
.eq(null != query.getOrderType(), TChargingOrder::getOrderType, query.getOrderType())
.eq(null != query.getSiteId(), TChargingOrder::getSiteId, query.getSiteId())
@@ -1212,37 +1148,37 @@
.eq(null != query.getStatus(), TChargingOrder::getStatus, query.getStatus())
.eq(TChargingOrder::getDelFlag, 0).eq(TChargingOrder::getRechargePaymentStatus, 2)
.in(null != ids && ids.size() > 0, TChargingOrder::getSiteId, ids);
- if(StringUtils.isNotEmpty(query.getCreateTime())){
+ if (StringUtils.isNotEmpty(query.getCreateTime())) {
String[] split = query.getCreateTime().split(" - ");
queryWrapper.between(TChargingOrder::getStartTime, split[0], split[1]);
}
- if(StringUtils.isNotEmpty(query.getLastTime())){
+ if (StringUtils.isNotEmpty(query.getLastTime())) {
String[] split = query.getLastTime().split(" - ");
queryWrapper.between(TChargingOrder::getEndTime, split[0], split[1]);
}
PageInfo<TChargingOrder> pageInfo = new PageInfo<>(query.getPageCurr(), query.getPageSize());
PageInfo<TChargingOrder> orderPageInfo = chargingOrderService.page(pageInfo, queryWrapper.orderByDesc(TChargingOrder::getCreateTime));
List<Site> siteList = siteClient.getSiteAll().getData();
-
+
List<WatchChargingOrderVo> list = new ArrayList<>();
for (TChargingOrder record : orderPageInfo.getRecords()) {
WatchChargingOrderVo vo = new WatchChargingOrderVo();
BeanUtils.copyProperties(record, vo);
vo.setIdStr(record.getId().toString());
- Site site = siteList.stream().filter(s->s.getId().equals(record.getSiteId())).findFirst().get();
+ Site site = siteList.stream().filter(s -> s.getId().equals(record.getSiteId())).findFirst().get();
vo.setSiteName(site.getName());
TChargingPile chargingPile = chargingPileClient.getChargingPileById(record.getChargingPileId()).getData();
vo.setTerminalName(chargingPile.getName());
TChargingGun chargingGun = chargingGunClient.getChargingGunById(record.getChargingGunId()).getData();
vo.setTerminalCode(chargingGun.getName());
-
- if(null != record.getStartTime() && null != record.getEndTime()){
+
+ if (null != record.getStartTime() && null != record.getEndTime()) {
long time = record.getEndTime().toEpochSecond(ZoneOffset.UTC) - record.getStartTime().toEpochSecond(ZoneOffset.UTC);
vo.setChargingTime(time + "");
}
long count = chargingOrderAccountingStrategyService.count(new LambdaQueryWrapper<TChargingOrderAccountingStrategy>().eq(TChargingOrderAccountingStrategy::getChargingOrderId, record.getId()));
vo.setTimeFrame(count);
-
+
vo.setAuthInfo(roleType == 1 ? true : partnerClient.authMenu(objectId, record.getSiteId(), SiteMenu.CHARGING_PILE_ORDER_MONITORING_RECORD_INFO.getValue()));
vo.setAuthDelete(roleType == 1 ? true : partnerClient.authMenu(objectId, record.getSiteId(), SiteMenu.CHARGING_PILE_ORDER_MONITORING_RECORD_DEL.getValue()));
list.add(vo);
@@ -1256,8 +1192,8 @@
pageInfos.setTotal(pageInfo.getTotal());
return R.ok(pageInfos);
}
-
-
+
+
@RequiresPermissions(value = {"/chargeOrderMonitoring/del"}, logical = Logical.OR)
@ResponseBody
@GetMapping(value = "/watch/deletes")
@@ -1266,89 +1202,87 @@
uploadRealTimeMonitoringDataService.delete(id);
return R.ok();
}
-
+
/**
* 处理充电订单实时监控数据相关的业务逻辑
+ *
* @param query
*/
@PostMapping("/chargeMonitoring")
- public void chargeMonitoring(@RequestBody UploadRealTimeMonitoringDataQuery query){
+ public void chargeMonitoring(@RequestBody UploadRealTimeMonitoringDataQuery query) {
chargingOrderService.chargeMonitoring(query);
}
+
+
/**
* 通过流水号查询订单
+ *
* @param code
* @return
*/
@PostMapping(value = "/getOrderByCode/{code}")
- public R<TChargingOrder> getOrderByCode(@PathVariable("code") String code){
+ public R<TChargingOrder> getOrderByCode(@PathVariable("code") String code) {
TChargingOrder one = chargingOrderService.getOne(Wrappers.lambdaQuery(TChargingOrder.class)
.eq(TChargingOrder::getCode, code));
one.setIdStr(one.getId().toString());
return R.ok(one);
}
-
-
-
-
+
+
@RequiresPermissions(value = {"/chargingOperationAnalysis"}, logical = Logical.OR)
@ResponseBody
@PostMapping(value = "/charging/statistics")
@ApiOperation(value = "统计,充电订单分析", tags = {"管理后台-数据分析-充电运营分析"})
- public R<TCharingOrderMapVO> watchChargingOrder(@RequestBody ChargingStatisticsQueryDto statisticsQueryDto){
- List<Integer> siteIds =new ArrayList<>();
- if (statisticsQueryDto.getSiteId()==null) {
+ public R<TCharingOrderMapVO> watchChargingOrder(@RequestBody ChargingStatisticsQueryDto statisticsQueryDto) {
+ List<Integer> siteIds = new ArrayList<>();
+ if (statisticsQueryDto.getSiteId() == null) {
Long userId = tokenService.getLoginUser().getUserid();
//获取当前登录的siteIds
List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData();
for (GetSiteListDTO datum : data) {
siteIds.add(datum.getId());
}
- }else {
+ } else {
siteIds.add(statisticsQueryDto.getSiteId());
}
- if (siteIds.isEmpty())siteIds.add(-1);
+ if (siteIds.isEmpty()) siteIds.add(-1);
TCharingOrderMapVO tCharingOrderMapVO = new TCharingOrderMapVO();
LocalDate start = null;
LocalDate end = null;
- if (statisticsQueryDto.getDayType()==1){
+ if (statisticsQueryDto.getDayType() == 1) {
start = LocalDate.now();
end = LocalDate.now().plusDays(1);
- }else if (statisticsQueryDto.getDayType()==2){
- LocalDate today = LocalDate.now();
+ } else if (statisticsQueryDto.getDayType() == 2) {
// 获取本周一的日期
start = statisticsQueryDto.getStartTime();
- end = statisticsQueryDto.getEndTime();
- } else if (statisticsQueryDto.getDayType()==3){
+ end = statisticsQueryDto.getEndTime().plusDays(1);
+ } else if (statisticsQueryDto.getDayType() == 3) {
// 获取当前日期
start = statisticsQueryDto.getStartTime();
- end = statisticsQueryDto.getEndTime();
- }else if (statisticsQueryDto.getDayType()==4){
+ end = statisticsQueryDto.getEndTime().plusDays(1);
+ } else if (statisticsQueryDto.getDayType() == 4) {
// 获取今年1月1日的日期
start = statisticsQueryDto.getStartTime();
- end = statisticsQueryDto.getEndTime();
- }else if (statisticsQueryDto.getDayType()==5){
+ end = statisticsQueryDto.getEndTime().plusDays(1);
+ } else if (statisticsQueryDto.getDayType() == 5) {
start = statisticsQueryDto.getStartTime();
end = statisticsQueryDto.getEndTime();
- if (start.equals(end)){
- end = end.plusDays(1);
- }
}
//上方饼图
- List<Map<String,Object>> maps = chargingOrderService.getSumByType(start,end, siteIds);
+ List<Map<String, Object>> maps = chargingOrderService.getSumByType(start, end, siteIds);
- if (statisticsQueryDto.getDayType()==1){
- List<Map<String,Object>> maps1 = chargingOrderService.getDateData(start,end, siteIds);
+ if (statisticsQueryDto.getDayType() == 1) {
+ List<Map<String, Object>> maps1 = chargingOrderService.getDateData(start, end, siteIds);
List<Map<String, Object>> charMap = new ArrayList<>();
// 生成从 "00:00" 到 "23:00" 的时间数据
for (int hour = 0; hour < 24; hour++) {
String time = String.format("%02d:00", hour);
Map<String, Object> mapWithTimeValue = findMapWithTimeValue(maps1, time);
- if (mapWithTimeValue!=null){
+ if (mapWithTimeValue != null) {
charMap.add(mapWithTimeValue);
- }else {
+ } else {
Map<String, Object> timeMap = new HashMap<>();
timeMap.put("time", time); // 初始化值为 null
timeMap.put("electrovalence", 0);
@@ -1362,8 +1296,8 @@
}
tCharingOrderMapVO.setMaps1(charMap);
- }else if (statisticsQueryDto.getDayType()==2){
- List<Map<String,Object>> maps1 = chargingOrderService.getWeekData(start,end, siteIds);
+ } else if (statisticsQueryDto.getDayType() == 2) {
+ List<Map<String, Object>> maps1 = chargingOrderService.getWeekData(start, end, siteIds);
LocalDate startDate = statisticsQueryDto.getStartTime();
LocalDate endDate = statisticsQueryDto.getEndTime();
@@ -1392,8 +1326,8 @@
startDate = startDate.plusDays(1);
}
tCharingOrderMapVO.setMaps1(dateRangeStatistics);
- }else if (statisticsQueryDto.getDayType()==3){
- List<Map<String,Object>> maps1 = chargingOrderService.getMonthData(start,end, siteIds);
+ } else if (statisticsQueryDto.getDayType() == 3) {
+ List<Map<String, Object>> maps1 = chargingOrderService.getMonthData(start, end, siteIds);
LocalDate startDate = statisticsQueryDto.getStartTime();
LocalDate endDate = statisticsQueryDto.getEndTime();
@@ -1422,8 +1356,8 @@
startDate = startDate.plusDays(1);
}
tCharingOrderMapVO.setMaps1(dateRangeStatistics);
- }else if (statisticsQueryDto.getDayType()==4){
- List<Map<String,Object>> maps1 = chargingOrderService.getYearData(start,end, siteIds);
+ } else if (statisticsQueryDto.getDayType() == 4) {
+ List<Map<String, Object>> maps1 = chargingOrderService.getYearData(start, end, siteIds);
LocalDate startDate = statisticsQueryDto.getStartTime();
LocalDate endDate = statisticsQueryDto.getEndTime();
@@ -1453,12 +1387,11 @@
startDate = startDate.plusDays(1);
}
tCharingOrderMapVO.setMaps1(dateRangeStatistics);
- }else if (statisticsQueryDto.getDayType()==5){
- List<Map<String,Object>> maps1 = chargingOrderService.getByDate(start,end, siteIds);
+ } else if (statisticsQueryDto.getDayType() == 5) {
+ List<Map<String, Object>> maps1 = chargingOrderService.getByDate(start, end, siteIds);
LocalDate startDate = statisticsQueryDto.getStartTime();
LocalDate endDate = statisticsQueryDto.getEndTime();
-
List<Map<String, Object>> dateRangeStatistics = new ArrayList<>();
@@ -1493,15 +1426,15 @@
BigDecimal commissionAmount = BigDecimal.ZERO;
for (Map<String, Object> map : maps) {
BigDecimal periodElectricPrice = (BigDecimal) map.get("period_electric_price");
- Long order_source = (Long)map.get("order_source");
- if(2 != order_source){
+ Long order_source = (Long) map.get("order_source");
+ if (2 != order_source) {
allMoney = allMoney.add(periodElectricPrice);
}
BigDecimal total_amount = (BigDecimal) map.get("total_amount");
allMoney = allMoney.add(total_amount);
commissionAmount = commissionAmount.add((BigDecimal) map.get("commissionAmount"));
}
- allMoney = allMoney.multiply(new BigDecimal("0.006"));
+ allMoney = allMoney.multiply(new BigDecimal("0.006"));
tCharingOrderMapVO.setAllMoney(allMoney);
tCharingOrderMapVO.setCommissionAmount(commissionAmount);
return R.ok(tCharingOrderMapVO);
@@ -1526,10 +1459,10 @@
}
- List<Map<String,Object>> maps1 = chargingOrderService.queryPower(siteIds);
+ List<Map<String, Object>> maps1 = chargingOrderService.queryPower(siteIds);
- Map<String,Object> map = chargingOrderService.qureryPowerLevel(siteIds,statisticsQueryDto);
+ Map<String, Object> map = chargingOrderService.qureryPowerLevel(siteIds, statisticsQueryDto);
TCharingOrderPowerMapVO tCharingOrderPowerMapVO = new TCharingOrderPowerMapVO();
tCharingOrderPowerMapVO.setMaps1(map);
@@ -1537,41 +1470,41 @@
return R.ok(tCharingOrderPowerMapVO);
}
-
-
+
+
@RequiresPermissions(value = {"/chargingUserAnalysis"}, logical = Logical.OR)
@ResponseBody
@PostMapping(value = "/charging/users")
@ApiOperation(value = "除电站流量外", tags = {"管理后台-数据分析-充电用户分析"})
- public R<TCharingUserMapVO> users(@RequestBody ChargingStatisticsQueryDto statisticsQueryDto){
+ public R<TCharingUserMapVO> users(@RequestBody ChargingStatisticsQueryDto statisticsQueryDto) {
Long userId = tokenService.getLoginUser().getUserid();
List<Integer> siteIds = new ArrayList<>();
- if (statisticsQueryDto.getSiteId()==null){
+ if (statisticsQueryDto.getSiteId() == null) {
List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData();
for (GetSiteListDTO datum : data) {
siteIds.add(datum.getId());
}
- }else {
+ } else {
siteIds.add(statisticsQueryDto.getSiteId());
}
- if (siteIds.isEmpty())siteIds.add(-1);
+ if (siteIds.isEmpty()) siteIds.add(-1);
statisticsQueryDto.setSiteIds(siteIds);
-
+
TCharingUserMapVO tCharingUserMapVO = new TCharingUserMapVO();
//上方折现
- if (statisticsQueryDto.getDayType()==1){
- List<Map<String,Object>> map = chargingOrderService.usersDay(statisticsQueryDto);
+ if (statisticsQueryDto.getDayType() == 1) {
+ List<Map<String, Object>> map = chargingOrderService.usersDay(statisticsQueryDto);
List<Map<String, Object>> charMap = new ArrayList<>();
// 生成从 "00:00" 到 "23:00" 的时间数据
for (int hour = 0; hour < 24; hour++) {
String time = String.format("%02d:00", hour);
Map<String, Object> mapWithTimeValue = findMapWithTimeValue(map, time);
- if (mapWithTimeValue!=null){
+ if (mapWithTimeValue != null) {
charMap.add(mapWithTimeValue);
- }else {
+ } else {
Map<String, Object> timeMap = new HashMap<>();
timeMap.put("time", time); // 初始化值为 null
timeMap.put("counts", 0);
@@ -1580,16 +1513,16 @@
}
}
- List<Map<String,Object>> map1 = chargingOrderService.usersDay1();
+ List<Map<String, Object>> map1 = chargingOrderService.usersDay1();
List<Map<String, Object>> charMap1 = new ArrayList<>();
// 生成从 "00:00" 到 "23:00" 的时间数据
for (int hour = 0; hour < 24; hour++) {
String time = String.format("%02d:00", hour);
Map<String, Object> mapWithTimeValue = findMapWithTimeValue(map1, time);
- if (mapWithTimeValue!=null){
+ if (mapWithTimeValue != null) {
charMap1.add(mapWithTimeValue);
- }else {
+ } else {
Map<String, Object> timeMap = new HashMap<>();
timeMap.put("time", time); // 初始化值为 null
timeMap.put("counts", 0);
@@ -1599,12 +1532,12 @@
}
- tCharingUserMapVO.setMap(charMap);
- tCharingUserMapVO.setMap1(charMap1);
- }else {
+ tCharingUserMapVO.setMap(charMap);
+ tCharingUserMapVO.setMap1(charMap1);
+ } else {
- List<Map<String,Object>> map = chargingOrderService.usersByQuery(statisticsQueryDto);
+ List<Map<String, Object>> map = chargingOrderService.usersByQuery(statisticsQueryDto);
//按日
@@ -1635,8 +1568,7 @@
tCharingUserMapVO.setMap(dateRangeStatistics);
- List<Map<String,Object>> map1 = chargingOrderService.usersByQuery1(statisticsQueryDto);
-
+ List<Map<String, Object>> map1 = chargingOrderService.usersByQuery1(statisticsQueryDto);
LocalDate startDate1 = statisticsQueryDto.getStartTime();
@@ -1665,22 +1597,20 @@
tCharingUserMapVO.setMap1(dateRangeStatistics1);
-
-
}
//用户标签
- List<Map<String,Object>> maps = chargingOrderService.getUserTagCount();
- Map<String,Object> stringObjectMap = new HashMap<>();
- Long noTagCount = chargingOrderService.countNoTag();
- stringObjectMap.put("count",noTagCount);
+ List<Map<String, Object>> maps = chargingOrderService.getUserTagCount();
+ Map<String, Object> stringObjectMap = new HashMap<>();
+ Long noTagCount = chargingOrderService.countNoTag();
+ stringObjectMap.put("count", noTagCount);
maps.add(stringObjectMap);
//会员标签
- List<Map<String,Object>> maps1 = chargingOrderService.getVipCount();
+ List<Map<String, Object>> maps1 = chargingOrderService.getVipCount();
//单位消费
- List<Map<String, Object>> untiMap = chargingOrderService.unitConsumption(statisticsQueryDto);
+ List<Map<String, Object>> untiMap = chargingOrderService.unitConsumption(statisticsQueryDto);
//车辆用途
List<Map<String, Object>> carMap = chargingOrderService.carUserMethod();
@@ -1692,7 +1622,7 @@
brands.add(objectMap.get("vehicle_brand").toString());
}
- if (carBrandMap.size()>=5) {
+ if (carBrandMap.size() >= 5) {
Long count = chargingOrderService.countCar(brands);
Map<String, Object> others = new HashMap<>();
others.put("vehicle_brand", "其他");
@@ -1700,7 +1630,7 @@
carBrandMap.add(others);
}
//本地车数量
- Map<String,Object> localCarMap = chargingOrderService.countLocalCar();
+ Map<String, Object> localCarMap = chargingOrderService.countLocalCar();
tCharingUserMapVO.setUserMaps(maps);
@@ -1712,28 +1642,28 @@
return R.ok(tCharingUserMapVO);
}
-
-
+
+
@RequiresPermissions(value = {"/chargingUserAnalysis"}, logical = Logical.OR)
@ResponseBody
@PostMapping(value = "/charging/sites")
@ApiOperation(value = "电站评价", tags = {"管理后台-数据分析-充电用户分析"})
- public R<TCharingUserEvaluateVO> sites(@RequestBody ChargingStatisticsQueryDto statisticsQueryDto){
- List<Integer> siteIds =new ArrayList<>();
- if (statisticsQueryDto.getSiteId()==null) {
+ public R<TCharingUserEvaluateVO> sites(@RequestBody ChargingStatisticsQueryDto statisticsQueryDto) {
+ List<Integer> siteIds = new ArrayList<>();
+ if (statisticsQueryDto.getSiteId() == null) {
Long userId = tokenService.getLoginUser().getUserid();
//获取当前登录的siteIds
List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData();
for (GetSiteListDTO datum : data) {
siteIds.add(datum.getId());
}
- }else {
+ } else {
siteIds.add(statisticsQueryDto.getSiteId());
}
//查询评价分
Double aver = chargingOrderService.getAver(siteIds);
//查询各个分数
- List<Map<String,Object>> evaluate = chargingOrderService.getLevelEvaluate(siteIds);
+ List<Map<String, Object>> evaluate = chargingOrderService.getLevelEvaluate(siteIds);
//查询差评回复数
List<Integer> mark = new ArrayList<>();
mark.add(1);
@@ -1746,38 +1676,38 @@
//好评标签
- List<Map<String,Object>> goodTop = orderEvaluateService.goodTop(siteIds);
- //差评标签
- List<Map<String,Object>> badTop = orderEvaluateService.badTop(siteIds);
+ List<Map<String, Object>> goodTop = orderEvaluateService.goodTop(siteIds);
+ //差评标签
+ List<Map<String, Object>> badTop = orderEvaluateService.badTop(siteIds);
//流量分析
- List<Map<String,Object>> sourceMap = chargingOrderService.countBySource(siteIds,statisticsQueryDto);
+ List<Map<String, Object>> sourceMap = chargingOrderService.countBySource(siteIds, statisticsQueryDto);
tCharingUserEvaluateVO.setGoodTop(goodTop);
tCharingUserEvaluateVO.setBadTop(badTop);
tCharingUserEvaluateVO.setFlow(sourceMap);
//流量
return R.ok(tCharingUserEvaluateVO);
}
-
-
+
+
@RequiresPermissions(value = {"/operationMaintenanceAnalysis"}, logical = Logical.OR)
@ResponseBody
@PostMapping(value = "/charging/equipment")
@ApiOperation(value = "电站评价", tags = {"管理后台-数据分析-设备运维分析"})
- public R<TCharingUserEquimentVO> equipment(@RequestBody ChargingStatisticsQueryDto statisticsQueryDto){
- List<Integer> siteIds =new ArrayList<>();
- if (statisticsQueryDto.getSiteId()==null||statisticsQueryDto.getSiteId()==0) {
+ public R<TCharingUserEquimentVO> equipment(@RequestBody ChargingStatisticsQueryDto statisticsQueryDto) {
+ List<Integer> siteIds = new ArrayList<>();
+ if (statisticsQueryDto.getSiteId() == null || statisticsQueryDto.getSiteId() == 0) {
Long userId = tokenService.getLoginUser().getUserid();
//获取当前登录的siteIds
List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData();
for (GetSiteListDTO datum : data) {
siteIds.add(datum.getId());
}
- }else {
+ } else {
siteIds.add(statisticsQueryDto.getSiteId());
}
//直流可用率
- List<Map<String,Object>> equipmentMap1 = chargingOrderService.equipmentUserType1(siteIds,statisticsQueryDto);
+ List<Map<String, Object>> equipmentMap1 = chargingOrderService.equipmentUserType1(siteIds, statisticsQueryDto);
for (Map<String, Object> result : equipmentMap1) {
Object percentObj = result.get("percent");
if (percentObj instanceof String) {
@@ -1799,7 +1729,7 @@
}
//交流可用率
- List<Map<String,Object>> equipmentMap2= chargingOrderService.equipmentUserType2(siteIds,statisticsQueryDto);
+ List<Map<String, Object>> equipmentMap2 = chargingOrderService.equipmentUserType2(siteIds, statisticsQueryDto);
for (Map<String, Object> result : equipmentMap2) {
Object percentObj = result.get("percent");
@@ -1828,28 +1758,27 @@
//直流故障率
- List<Map<String,Object>> equipmentMapbroke1 = chargingOrderService.equipmentMapbroke1(siteIds,statisticsQueryDto);
+ List<Map<String, Object>> equipmentMapbroke1 = chargingOrderService.equipmentMapbroke1(siteIds, statisticsQueryDto);
//交流故障率
- List<Map<String,Object>> equipmentMapbroke2 = chargingOrderService.equipmentMapbroke2(siteIds,statisticsQueryDto);
+ List<Map<String, Object>> equipmentMapbroke2 = chargingOrderService.equipmentMapbroke2(siteIds, statisticsQueryDto);
double average2 = calculateAveragePercent(equipmentMapbroke1, equipmentMapbroke2);
System.out.printf("The average percent is: %.2f\n", average2);
//直流离网率
- List<Map<String,Object>> equipmentMapOut1 = chargingOrderService.equipmentMapOut1(siteIds,statisticsQueryDto);
+ List<Map<String, Object>> equipmentMapOut1 = chargingOrderService.equipmentMapOut1(siteIds, statisticsQueryDto);
//交流离网率
- List<Map<String,Object>> equipmentMapOut2 = chargingOrderService.equipmentMapOut2(siteIds,statisticsQueryDto);
+ List<Map<String, Object>> equipmentMapOut2 = chargingOrderService.equipmentMapOut2(siteIds, statisticsQueryDto);
double average3 = calculateAveragePercent(equipmentMapOut1, equipmentMapOut2);
System.out.printf("The average percent is: %.2f\n", average3);
//需求电流满足率
- List<Map<String,Object>> needElec1 = chargingOrderService.needElec(siteIds,statisticsQueryDto);
- List<Map<String,Object>> needElec2 = chargingOrderService.needElec1(siteIds,statisticsQueryDto);
+ List<Map<String, Object>> needElec1 = chargingOrderService.needElec(siteIds, statisticsQueryDto);
+ List<Map<String, Object>> needElec2 = chargingOrderService.needElec1(siteIds, statisticsQueryDto);
double average4 = calculateAveragePercent(needElec1, needElec2);
System.out.printf("The average percent is: %.2f\n", average4);
-
TCharingUserEquimentVO tCharingUserEquimentVO = new TCharingUserEquimentVO();
@@ -1869,6 +1798,7 @@
}
private static final DecimalFormat DF = new DecimalFormat("#.00");
+
public static double calculateAveragePercent(List<Map<String, Object>> mapList1, List<Map<String, Object>> mapList2) {
int totalElements = mapList1.size() + mapList2.size();
double sum = 0.0;
@@ -1896,8 +1826,8 @@
// 格式化为两位小数
return Double.parseDouble(DF.format(average));
}
-
-
+
+
@RequiresPermissions(value = {"/workbench"}, logical = Logical.OR)
@ResponseBody
@PostMapping(value = "/work/charge")
@@ -1914,16 +1844,10 @@
} else {
siteIds.add(statisticsQueryDto.getSiteId());
}
- LocalDateTime selectDate = statisticsQueryDto.getSelectDate();
- LocalDateTime min = selectDate.with(LocalTime.MIN);
- LocalDateTime max = selectDate.with(LocalTime.MAX);
-
- List<TChargingOrder> list = chargingOrderService.lambdaQuery().in(!siteIds.isEmpty(), TChargingOrder::getSiteId, siteIds)
- .between(TChargingOrder::getCreateTime, min, max).eq(TChargingOrder::getStatus,5).eq(TChargingOrder::getDelFlag, 0)
- .eq(TChargingOrder::getRechargePaymentStatus, 2)
- .eq(statisticsQueryDto.getSiteId() != null, TChargingOrder::getSiteId, statisticsQueryDto.getSiteId()).list();
+ String format = statisticsQueryDto.getSelectDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+ Map<String, Object> stringObjectMap = chargingOrderService.getChargingOrderCount(siteIds, format);
//当日的订单总数
- int size = list.size();
+ int size = 0;
//计算list中paymentAmount的总和
BigDecimal totalPaymentAmount = BigDecimal.ZERO;
//计算list中electrovalence的总和
@@ -1932,23 +1856,14 @@
BigDecimal totalServiceCharge = BigDecimal.ZERO;
//计算list中charging_capacity的总和
BigDecimal totalChargingCapacity = BigDecimal.ZERO;
- List<TChargingOrderAccountingStrategy> accountingStrategyList = chargingOrderAccountingStrategyService.list();
- for (TChargingOrder order : list) {
- List<TChargingOrderAccountingStrategy> collect = accountingStrategyList.stream().filter(s -> s.getChargingOrderId().equals(order.getId())).collect(Collectors.toList());
- BigDecimal periodElectricPrice = collect.stream().map(TChargingOrderAccountingStrategy::getPeriodElectricPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
- BigDecimal periodServicePrice = collect.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
- BigDecimal chargingCapacity = collect.stream().map(TChargingOrderAccountingStrategy::getChargingCapacity).reduce(BigDecimal.ZERO, BigDecimal::add);
- totalElectrovalence = totalElectrovalence.add(periodElectricPrice);
- totalChargingCapacity = totalChargingCapacity.add(chargingCapacity);
- if(2 != order.getOrderSource()){
- totalServiceCharge = totalServiceCharge.add(periodServicePrice);
- totalPaymentAmount = totalPaymentAmount.add(periodElectricPrice).add(periodServicePrice);
- }else{
- totalServiceCharge = totalServiceCharge.add(periodServicePrice.multiply(new BigDecimal("0.8")));
- totalPaymentAmount = totalPaymentAmount.add(periodElectricPrice).add(periodServicePrice.multiply(new BigDecimal("0.8")));
- }
+ if (null != stringObjectMap) {
+ size = Integer.parseInt(stringObjectMap.get("num").toString());
+ totalElectrovalence = new BigDecimal(stringObjectMap.get("electrovalence").toString());
+ totalServiceCharge = new BigDecimal(stringObjectMap.get("servicecharge").toString());
+ totalChargingCapacity = new BigDecimal(stringObjectMap.get("electricity").toString());
+ totalPaymentAmount = totalElectrovalence.add(totalServiceCharge);
}
-
+
TCharingWorkVO tCharingWorkVO = new TCharingWorkVO();
tCharingWorkVO.setCount(size);
tCharingWorkVO.setTotalPaymentAmount(totalPaymentAmount);
@@ -1957,9 +1872,8 @@
tCharingWorkVO.setTotalChargingCapacity(totalChargingCapacity);
return R.ok(tCharingWorkVO);
}
-
-
-
+
+
@RequiresPermissions(value = {"/workbench"}, logical = Logical.OR)
@ResponseBody
@PostMapping(value = "/work/chargeDetail")
@@ -1977,16 +1891,16 @@
} else {
siteIds.add(statisticsQueryDto.getSiteId());
}
- if (statisticsQueryDto.getDayType()==1) {
- List<Map<String,Object>> charMap1 = chargingOrderService.getHourType(siteIds,statisticsQueryDto);
+ if (statisticsQueryDto.getDayType() == 1) {
+ List<Map<String, Object>> charMap1 = chargingOrderService.getHourType(siteIds, statisticsQueryDto);
List<Map<String, Object>> charMap = new ArrayList<>();
// 生成从 "00:00" 到 "23:00" 的时间数据
for (int hour = 0; hour < 24; hour++) {
String time = String.format("%02d:00", hour);
Map<String, Object> mapWithTimeValue = findMapWithTimeValue(charMap1, time);
- if (mapWithTimeValue!=null){
+ if (mapWithTimeValue != null) {
charMap.add(mapWithTimeValue);
- }else {
+ } else {
Map<String, Object> timeMap = new HashMap<>();
timeMap.put("time", time); // 初始化值为 null
timeMap.put("electrovalence", 0);
@@ -1997,21 +1911,21 @@
}
}
return R.ok(charMap);
- }else if (statisticsQueryDto.getDayType()==2){
+ } else if (statisticsQueryDto.getDayType() == 2) {
// 假设 chargingOrderService.getDateType() 返回的是按天的数据
List<Map<String, Object>> charMap1 = chargingOrderService.getDateType(siteIds, statisticsQueryDto);
-
+
// 解析 startTime 和 endTime 为 LocalDate
LocalDate startDate = statisticsQueryDto.getStartTime();
LocalDate endDate = statisticsQueryDto.getEndTime();
-
+
List<Map<String, Object>> dateRangeStatistics = new ArrayList<>();
-
+
// 遍历日期范围
while (!startDate.isAfter(endDate)) {
String formattedDate = startDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
Map<String, Object> dailyStats = findMapWithDateValue(charMap1, formattedDate);
-
+
if (dailyStats != null) {
dateRangeStatistics.add(dailyStats);
} else {
@@ -2023,26 +1937,26 @@
dateMap.put("electricity", 0);
dateRangeStatistics.add(dateMap);
}
-
+
// 移动到下一天
startDate = startDate.plusDays(1);
}
// return dateRangeStatistics;
return R.ok(dateRangeStatistics);
- }else if (statisticsQueryDto.getDayType()==3){
- List<Map<String,Object>> charMap1 = chargingOrderService.getMonthType(siteIds,statisticsQueryDto);
+ } else if (statisticsQueryDto.getDayType() == 3) {
+ List<Map<String, Object>> charMap1 = chargingOrderService.getMonthType(siteIds, statisticsQueryDto);
// 解析 startTime 和 endTime 为 LocalDate
LocalDate startDate = statisticsQueryDto.getStartTime();
LocalDate endDate = statisticsQueryDto.getEndTime();
-
+
List<Map<String, Object>> dateRangeStatistics = new ArrayList<>();
-
+
// 遍历日期范围
while (!startDate.isAfter(endDate)) {
String formattedDate = startDate.format(DateTimeFormatter.ofPattern("yyyy-MM"));
Map<String, Object> dailyStats = findMapWithDateValue(charMap1, formattedDate);
-
+
if (dailyStats != null) {
dateRangeStatistics.add(dailyStats);
} else {
@@ -2054,14 +1968,14 @@
dateMap.put("electricity", 0);
dateRangeStatistics.add(dateMap);
}
-
+
// 移动到下一天
startDate = startDate.plusMonths(1);
}
return R.ok(dateRangeStatistics);
-
+
}
- }catch (Exception e){
+ } catch (Exception e) {
e.printStackTrace();
}
return R.ok();
@@ -2069,7 +1983,7 @@
}
- private static Map<String, Object> findMapWithTimeValue(List<Map<String, Object>> charMap1,String timeValue) {
+ private static Map<String, Object> findMapWithTimeValue(List<Map<String, Object>> charMap1, String timeValue) {
for (Map<String, Object> map : charMap1) {
if (map.containsKey("time") && map.get("time").equals(timeValue)) {
return map;
@@ -2086,10 +2000,8 @@
}
return null;
}
-
-
-
-
+
+
@RequiresPermissions(value = {"/workbench"}, logical = Logical.OR)
@ResponseBody
@PostMapping(value = "/work/use")
@@ -2106,13 +2018,13 @@
} else {
siteIds.add(statisticsQueryDto.getSiteId());
}
- List<Map<String,Object>> capMap = chargingOrderService.getchargingCapacity(siteIds,statisticsQueryDto);
+ List<Map<String, Object>> capMap = chargingOrderService.getchargingCapacity(siteIds, statisticsQueryDto);
List<TChargingPile> chargingPiles = chargingPileClient.getChargingPileBySiteIds(siteIds).getData();
BigDecimal totalRatedPower = chargingPiles.stream().map(TChargingPile::getRatedPower).reduce(BigDecimal.ZERO, BigDecimal::add);
-
+
//每日利用率=当日充电度数/(桩总功率*24小时)
BigDecimal multiply1 = totalRatedPower.multiply(new BigDecimal(24));
- System.err.println(JSON.toJSONString(capMap) + "---" + chargingPiles.size() + "---" + totalRatedPower + "---" + multiply1);
+// System.err.println(JSON.toJSONString(capMap) + "---" + chargingPiles.size() + "---" + totalRatedPower + "---" + multiply1);
capMap.forEach(map -> {
BigDecimal chargingCapacity = (BigDecimal) map.get("chargingCapacity");
BigDecimal result = chargingCapacity.divide(multiply1, 4, RoundingMode.HALF_UP);
@@ -2145,8 +2057,8 @@
}
return R.ok(dateRangeStatistics);
}
-
-
+
+
@RequiresPermissions(value = {"/workbench"}, logical = Logical.OR)
@ResponseBody
@GetMapping(value = "/work/shopOrder")
@@ -2159,8 +2071,8 @@
counts.add(count1);
return R.ok(counts);
}
-
-
+
+
@RequiresPermissions(value = {"/workbench"}, logical = Logical.OR)
@ResponseBody
@GetMapping(value = "/work/invoice")
@@ -2173,14 +2085,14 @@
counts.add(count1);
return R.ok(counts);
}
-
+
@RequiresPermissions(value = {"/workbench"}, logical = Logical.OR)
@ResponseBody
@GetMapping(value = "/work/users/count")
@ApiOperation(value = "用户数量", tags = {"管理后台-工作台"})
public R usersCount() {
- List<Map<String,Object>> userMap = chargingOrderService.countAllUserData();
- return R.ok(userMap);
+ List<Map<String, Object>> userMap = chargingOrderService.countAllUserData();
+ return R.ok(userMap);
}
@@ -2190,32 +2102,31 @@
Long userId = tokenService.getLoginUserApplet().getUserId();
List<TChargingOrder> list = chargingOrderService.list(Wrappers.lambdaQuery(TChargingOrder.class)
.eq(TChargingOrder::getAppUserId, userId)
- .in(TChargingOrder::getStatus, Arrays.asList(1,2,3,4)));
+ .in(TChargingOrder::getStatus, Arrays.asList(1, 2, 3, 4)));
List<Integer> gunIds = list.stream().map(TChargingOrder::getChargingGunId).collect(Collectors.toList());
return R.ok(gunIds);
}
-
-
/**
* 硬件充电结束后的处理逻辑
+ *
* @param code
*/
@PostMapping("/endCharge")
- public void endCharge(@RequestParam("code") String code){
+ public void endCharge(@RequestParam("code") String code) {
log.info(code + ":-------------------充电桩自动结束充电-------------------");
chargingOrderService.endCharge(code, 2);
}
-
/**
* 硬件异常结束充电后的处理逻辑
+ *
* @param code
*/
@PostMapping("/excelEndCharge")
- public void excelEndCharge(@RequestParam("code") String code){
+ public void excelEndCharge(@RequestParam("code") String code) {
log.info(code + ":-------------------充电异常,停止充电-------------------");
chargingOrderService.excelEndCharge(code);
}
@@ -2223,11 +2134,12 @@
/**
* 根据车牌号和时间查询有效的充电数据
+ *
* @param query
* @return
*/
@PostMapping("/getChargingOrderByLicensePlate")
- public R<TChargingOrder> getChargingOrderByLicensePlate(@RequestBody GetChargingOrderByLicensePlate query){
+ public R<TChargingOrder> getChargingOrderByLicensePlate(@RequestBody GetChargingOrderByLicensePlate query) {
TChargingOrder chargingOrder = chargingOrderService.getChargingOrderByLicensePlate(query);
return R.ok(chargingOrder);
}
@@ -2235,23 +2147,24 @@
/**
* 修改充电订单
+ *
* @param chargingOrder
* @return
*/
@PostMapping("/updateChargingOrder")
- public R<String> updateChargingOrder(@RequestBody TChargingOrder chargingOrder){
+ public R<String> updateChargingOrder(@RequestBody TChargingOrder chargingOrder) {
chargingOrderService.updateById(chargingOrder);
return R.ok();
}
-
-
+
+
@ResponseBody
@GetMapping(value = "/getEndOfChargePageInfo/{id}")
@ApiOperation(value = "获取充电结束页面数据", tags = {"小程序-扫一扫"})
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "订单id", required = true)
})
- public AjaxResult<EndOfChargePageInfo> getEndOfChargePageInfo(@PathVariable("id") String id){
+ public AjaxResult<EndOfChargePageInfo> getEndOfChargePageInfo(@PathVariable("id") String id) {
EndOfChargePageInfo endOfChargePageInfo = chargingOrderService.getEndOfChargePageInfo(id);
return AjaxResult.success(endOfChargePageInfo);
}
@@ -2259,33 +2172,36 @@
/**
* 获取订单数据
+ *
* @param order
* @return
*/
@PostMapping("/getChargingOrder")
- public R<List<TChargingOrder>> getChargingOrder(@RequestBody TChargingOrderVo order){
+ public R<List<TChargingOrder>> getChargingOrder(@RequestBody TChargingOrderVo order) {
List<TChargingOrder> chargingOrder = chargingOrderService.getChargingOrder(order);
return R.ok(chargingOrder);
}
-
-
+
+
/**
* 根据车辆id获取指定时间范围内的数据
+ *
* @param carId
* @param startTime
* @param endTime
* @return
*/
@PostMapping("/getCarChargingOrder")
- public R<List<TChargingOrder>> getCarChargingOrder(@RequestParam("carId") Long carId, @RequestParam("startTime") String startTime, @RequestParam("endTime") String endTime){
+ public R<List<TChargingOrder>> getCarChargingOrder(@RequestParam("carId") Long carId, @RequestParam("startTime") String startTime, @RequestParam("endTime") String endTime) {
List<TChargingOrder> list = chargingOrderService.list(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getAppUserCarId, carId).eq(TChargingOrder::getDelFlag, 0)
.in(TChargingOrder::getStatus, Arrays.asList(4, 5)).between(TChargingOrder::getStartTime, startTime, endTime));
return R.ok(list);
}
-
+
/**
* 根据车牌号查询指定时间范围内的数据
+ *
* @param plateNum
* @param startTime
* @param endTime
@@ -2293,7 +2209,7 @@
*/
@PostMapping("/getCarChargingOrderByPlateNum")
public R<List<TChargingOrder>> getCarChargingOrderByPlateNum(@RequestParam("plateNum") String plateNum, @RequestParam("startTime") String startTime,
- @RequestParam("endTime") String endTime){
+ @RequestParam("endTime") String endTime) {
List<TChargingOrder> list = chargingOrderService.list(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getPlateNum, plateNum).eq(TChargingOrder::getDelFlag, 0)
.in(TChargingOrder::getStatus, Arrays.asList(4, 5)).between(TChargingOrder::getStartTime, startTime, endTime));
return R.ok(list);
@@ -2302,38 +2218,36 @@
/**
* 添加三方平台充电订单数据
+ *
* @return
*/
@PostMapping("/addTripartitePlatformOrder")
- public R addTripartitePlatformOrder(@RequestBody AddTripartitePlatformOrder query){
+ public R addTripartitePlatformOrder(@RequestBody AddTripartitePlatformOrder query) {
return chargingOrderService.addTripartitePlatformOrder(query);
}
-
-
-
/**
* 根据三方平台订单id获取充电数据
+ *
* @param startChargeSeq
* @return
*/
@PostMapping("/getChargingOrderByStartChargeSeq")
- public R<TChargingOrder> getChargingOrderByStartChargeSeq(@RequestParam("startChargeSeq") String startChargeSeq){
+ public R<TChargingOrder> getChargingOrderByStartChargeSeq(@RequestParam("startChargeSeq") String startChargeSeq) {
TChargingOrder chargingOrder = chargingOrderService.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getStartChargeSeq, startChargeSeq));
return R.ok(chargingOrder);
}
-
-
/**
* 根据三方平台订单ids获取充电数据
+ *
* @param startChargeSeqs
* @return
*/
@PostMapping("/getChargingOrderByStartChargeSeqs")
- public R<List<TChargingOrder>> getChargingOrderByStartChargeSeqs(@RequestParam("startChargeSeqs") List<String> startChargeSeqs){
+ public R<List<TChargingOrder>> getChargingOrderByStartChargeSeqs(@RequestParam("startChargeSeqs") List<String> startChargeSeqs) {
List<TChargingOrder> list = chargingOrderService.list(new LambdaQueryWrapper<TChargingOrder>().in(TChargingOrder::getStartChargeSeq, startChargeSeqs));
return R.ok(list);
}
@@ -2341,44 +2255,48 @@
/**
* 三方平台请求停止充电
+ *
* @param startChargeSeq
* @return
*/
@PostMapping("/tripartitePlatformStopCharge")
- public R tripartitePlatformStopCharge(@RequestParam("startChargeSeq") String startChargeSeq){
+ public R tripartitePlatformStopCharge(@RequestParam("startChargeSeq") String startChargeSeq) {
return chargingOrderService.tripartitePlatformStopCharge(startChargeSeq);
}
-
-
+
+
/**
* 临时接口
* 获取充电后没有扣除费用的数据
+ *
* @return
*/
@GetMapping("/getNotPaymentChargingOrder")
- public R getNotPaymentChargingOrder(){
+ public R getNotPaymentChargingOrder() {
return chargingOrderService.getNotPaymentChargingOrder();
}
-
-
+
+
/**
* 手动推送订单给三方平台
+ *
* @param code
* @return
*/
@PostMapping("/pushOrderInfo")
- public R pushOrderInfo(@RequestParam String code){
+ public R pushOrderInfo(@RequestParam String code) {
return chargingOrderService.pushOrderInfo(code);
}
-
-
+
+
/**
* 添加汇总数据(临时)
+ *
* @return
*/
@ResponseBody
@GetMapping(value = "/addChargingOrderSummaryData")
- public R addChargingOrderSummaryData(){
+ public R addChargingOrderSummaryData() {
return chargingOrderService.addChargingOrderSummaryData();
}
@@ -2388,7 +2306,7 @@
@ResponseBody
@GetMapping(value = "/getStatisticsOfBattery")
@ApiOperation(value = "新能源汽车电池安全检测次数统计", tags = {"充电桩数据大屏"})
- public R<StatisticsOfBatteryVO> getStatisticsOfBattery(){
+ public R<StatisticsOfBatteryVO> getStatisticsOfBattery() {
return chargingOrderService.getStatisticsOfBattery();
}
@@ -2396,9 +2314,19 @@
/**
* 充电桩数据大屏 获取站点集合中总的充电量
*/
+ @ResponseBody
@GetMapping("/getSumDegreeBySiteIds")
- public R<BigDecimal> getSumDegreeBySiteIds(@RequestParam("siteIds") List<Integer> SiteIds){
- return R.ok(chargingOrderService.getSumDegreeBySiteIds(SiteIds));
+ public R<BigDecimal> getSumDegreeBySiteIds(@RequestParam("siteIds") List<Integer> SiteIds) {
+ Double sumDegreeBySiteIds = chargingOrderService.getSumDegreeBySiteIds(SiteIds);
+
+ return R.ok(new BigDecimal(sumDegreeBySiteIds));
+ }
+
+ @ResponseBody
+ @PostMapping("/addChargingOrder")
+ public R<Long> addChargingOrder(@RequestBody TChargingOrder chargingOrder) {
+ chargingOrderService.save(chargingOrder);
+ return R.ok(chargingOrder.getId());
}
@@ -2408,28 +2336,82 @@
Long userId = tokenService.getLoginUserApplet().getUserId();
TChargingOrder chargingOrder = chargingOrderService.getOne(Wrappers.lambdaQuery(TChargingOrder.class)
.eq(TChargingOrder::getAppUserId, userId)
- .in(TChargingOrder::getStatus, Arrays.asList(1,2,3,4))
+ .in(TChargingOrder::getStatus, Arrays.asList(1, 2, 3, 4))
.orderByDesc(TChargingOrder::getCreateTime)
.last("LIMIT 1"));
- if(Objects.isNull(chargingOrder)){
+ if (Objects.isNull(chargingOrder)) {
return R.ok();
}
return R.ok(String.valueOf(chargingOrder.getId()));
}
-// @GetMapping(value = "/getOrderByCode")
-// @ApiOperation(value = "H5通过编号查询订单", tags = {"H5-首页-用户充电订单信息"})
-// public R<String> getOrderByCode(@RequestParam("code") String code) {
-// Long userId = tokenService.getLoginUserApplet().getUserId();
-// TChargingOrder chargingOrder = chargingOrderService.getOne(Wrappers.lambdaQuery(TChargingOrder.class)
-// .eq(TChargingOrder::getAppUserId, userId)
-// .in(TChargingOrder::getStatus, Arrays.asList(1,2,3,4))
-// .orderByDesc(TChargingOrder::getCreateTime)
-// .last("LIMIT 1"));
-// if(Objects.isNull(chargingOrder)){
-// return R.ok();
-// }
-// return R.ok(String.valueOf(chargingOrder.getId()));
-// }
+ /**
+ * 手动查询订单和退款数据,完善退款记录
+ *
+ * @param orderId
+ * @param refund_out_trade_no
+ * @return
+ */
+ @PostMapping("/orderQueryRefund")
+ public R<?> orderQueryRefund(@RequestParam("orderId") Long orderId, @RequestParam("refund_out_trade_no") String refund_out_trade_no) {
+ chargingOrderService.orderQueryRefund(orderId, refund_out_trade_no);
+ return R.ok();
+ }
+
+ /**
+ * 手动查询订单和退款数据,批量完善退款记录
+ *
+ * @return
+ */
+ @PostMapping("/orderQueryRefundList")
+ public R<?> orderQueryRefundList(@RequestBody List<String> dto) {
+ for (String s : dto) {
+ String[] split = s.split(",");
+ chargingOrderService.orderQueryRefund(Long.valueOf(split[0]), split[1]);
+ }
+ return R.ok();
+ }
+
+
+ /**+。
+ * 手动添加完善订单费用明细
+ *
+ * @param orderId
+ * @return
+ */
+ @PostMapping("/addOrderExpenseBreakdown")
+ public R<?> addOrderExpenseBreakdown(@RequestParam("orderId") Long orderId) {
+ chargingOrderService.addOrderExpenseBreakdown(orderId);
+ return R.ok();
+ }
+
+
+ /**
+ * 手动批量修改订单支付金额
+ *
+ * @param dtos
+ * @return
+ */
+ @PostMapping("/updateOrderPaymentAmount")
+ public R<?> updateOrderPaymentAmount(@RequestBody List<UpdateOrderPaymentAmountDto> dtos) {
+ for (UpdateOrderPaymentAmountDto dto : dtos) {
+ chargingOrderService.update(new UpdateWrapper<TChargingOrder>().eq("id", dto.getOrderId())
+ .set("payment_amount", dto.getPaymentAmount()));
+ }
+ return R.ok();
+ }
+
+
+
+ /**
+ * 获取站点充电量
+ * @param siteIds
+ * @return
+ */
+ @PostMapping("/getSiteChargingCapacity")
+ public R<Map<Integer, BigDecimal>> getSiteChargingCapacity(@RequestParam("siteIds") List<Integer> siteIds){
+ Map<Integer, BigDecimal> siteChargingCapacity = chargingOrderService.getSiteChargingCapacity(siteIds);
+ return R.ok(siteChargingCapacity);
+ }
}
--
Gitblit v1.7.1