From ce19680b98669f8b4e66b2ce82fe0dcebe178445 Mon Sep 17 00:00:00 2001
From: luodangjia <luodangjia>
Date: 星期二, 10 九月 2024 09:46:16 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java | 376 ++++++
ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/UploadRealTimeMonitoringDataFallbackFactory.java | 7
ruoyi-service/ruoyi-payment/src/main/resources/cert/apiclient_cert.pem | 25
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java | 2
ruoyi-service/ruoyi-chargingPile/src/main/resources/template/运营商名称1-充电桩名称1-结算对账单明细-结算月份1.xlsx | 0
ruoyi-api/ruoyi-api-chargingPile/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports | 3
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/OrderFallbackFactory.java | 7
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/VipClient.java | 4
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TParkingRecordServiceImpl.java | 39
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TParkingRecord.java | 24
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/model/OfflineParkingOrder.java | 91 +
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/ParkingOrderService.java | 134 ++
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/model/CloudParkingOrder.java | 84 +
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserVipDetailController.java | 6
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TParkingRecordMapper.java | 21
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/UploadRealTimeMonitoringDataController.java | 20
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TSettlementConfirmMapper.xml | 39
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderTimeVO.java | 2
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java | 23
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml | 75 +
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/GiveVipUtil.java | 50
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/OrderClient.java | 6
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/AccountVO.java | 85 +
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingBillVO.java | 2
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java | 4
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java | 2
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java | 18
ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java | 9
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TRepairMapper.java | 3
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TSettlementConfirm.java | 200 +++
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/config/IotDAConfig.java | 6
ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java | 12
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java | 136 ++
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/CouponService.java | 120 ++
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ParkingLotClient.java | 10
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/model/GetCouponReq.java | 31
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/TParkingRecordPageInfoVO.java | 31
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/dto/SettlementConfirmAdd.java | 26
ruoyi-service/ruoyi-payment/src/main/resources/cert/apiclient_cert.p12 | 0
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/SiteClient.java | 11
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ParkingRecordFallbackFactory.java | 48
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/SiteFallbackFactory.java | 15
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/model/CloudParkingSpace.java | 35
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TSettlementConfirmServiceImpl.java | 34
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ParkingRecordClient.java | 54
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TRepairController.java | 3
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/SettlementListQuery.java | 25
ruoyi-service/ruoyi-chargingPile/src/main/resources/template/账户结算账单.xlsx | 0
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserCarFallbackFactory.java | 5
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/PartnerController.java | 7
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/controller/CouponController.java | 50
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/model/Parameter.java | 47
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/TParkingRecordService.java | 10
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/model/UsedCoupon.java | 47
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java | 21
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java | 11
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingLotController.java | 14
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TSettlementConfirmService.java | 24
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/SiteMapper.java | 2
ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/UploadRealTimeMonitoringDataClient.java | 9
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/token/IotTokenUtil.java | 2
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/model/OfflineParkingResponse.java | 36
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ParkingLotFallbackFactory.java | 5
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/export/TChargingOrderExport.java | 159 ++
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/query/ParkingRecordQuery.java | 26
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java | 23
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/SettlementTotalVO.java | 21
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/TParkingRecordVO.java | 23
ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TParkingRecordMapper.xml | 55
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TSettlementConfirmMapper.java | 33
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java | 20
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserCarClient.java | 9
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserCarController.java | 18
ruoyi-service/ruoyi-payment/src/main/resources/cert/证书使用说明.txt | 18
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/model/OfflineParkingSpace.java | 39
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/GetChargingOrderByLicensePlate.java | 24
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/model/GetCouponResp.java | 43
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java | 122 ++
ruoyi-service/ruoyi-payment/src/main/resources/bootstrap.yml | 1
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/ChargingListQuery.java | 36
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/model/BaseResponse.java | 31
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/GetParkingRecord.java | 19
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/AccountListVO.java | 31
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/controller/ParkingOrderController.java | 101 +
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java | 2
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java | 148 +
ruoyi-service/ruoyi-payment/src/main/resources/cert/apiclient_key.pem | 28
ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TParkingLotMapper.xml | 3
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/export/TParkingRecordExport.java | 41
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingBillListVO.java | 8
90 files changed, 3,208 insertions(+), 122 deletions(-)
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserCarFallbackFactory.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserCarFallbackFactory.java
index 7c406e4..2a15a88 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserCarFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserCarFallbackFactory.java
@@ -31,6 +31,11 @@
public R<List<TAppUserCar>> getCarByIds(List<Long> carIds) {
return R.fail("根据用户车辆id查询车辆信息失败:"+throwable.getMessage());
}
+
+ @Override
+ public R<TAppUserCar> getAppUserCarByLicensePlate(String licensePlate) {
+ return R.fail("根据车牌号查询数据失败:" + throwable.getMessage());
+ }
};
}
}
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserCarClient.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserCarClient.java
index 27f3229..80a88a5 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserCarClient.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserCarClient.java
@@ -28,4 +28,13 @@
*/
@PostMapping(value = "/t-app-user-car/getCarByIds")
public R<List<TAppUserCar>> getCarByIds(@RequestBody List<Long> carIds);
+
+
+ /**
+ * 根据车牌号查询数据
+ * @param licensePlate
+ * @return
+ */
+ @PostMapping(value = "/t-app-user-car/getAppUserCarByLicensePlate")
+ R<TAppUserCar> getAppUserCarByLicensePlate(@RequestParam("licensePlate") String licensePlate);
}
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ParkingLotFallbackFactory.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ParkingLotFallbackFactory.java
index d66b799..74e56bf 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ParkingLotFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ParkingLotFallbackFactory.java
@@ -44,6 +44,11 @@
public R<BigDecimal> getRecordAmount(LocalDate sixBefore) {
return null;
}
+
+ @Override
+ public R<TParkingLot> getParkingLotByAppKey(String appKey) {
+ return R.fail("根据停车场标识查询失败:" + throwable.getMessage());
+ }
};
}
}
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ParkingRecordFallbackFactory.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ParkingRecordFallbackFactory.java
new file mode 100644
index 0000000..0bd9750
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ParkingRecordFallbackFactory.java
@@ -0,0 +1,48 @@
+package com.ruoyi.chargingPile.api.factory;
+
+import com.ruoyi.chargingPile.api.feignClient.ParkingRecordClient;
+import com.ruoyi.chargingPile.api.model.TParkingRecord;
+import com.ruoyi.chargingPile.api.vo.GetParkingRecord;
+import com.ruoyi.common.core.domain.R;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+
+
+/**
+ * 停车场服务降级处理
+ *
+ * @author ruoyi
+ */
+@Component
+public class ParkingRecordFallbackFactory implements org.springframework.cloud.openfeign.FallbackFactory<ParkingRecordClient>
+{
+ private static final Logger log = LoggerFactory.getLogger(ParkingRecordFallbackFactory.class);
+
+ @Override
+ public ParkingRecordClient create(Throwable throwable) {
+ log.error("停车记录调用失败:{}", throwable.getMessage());
+ return new ParkingRecordClient() {
+
+
+ @Override
+ public R<TParkingRecord> getParkingRecord(GetParkingRecord query) {
+ return R.fail("根据车牌和状态查询停车数据失败:" + throwable.getMessage());
+ }
+
+ @Override
+ public void updateParkingRecord(TParkingRecord parkingRecord) {
+
+ }
+
+ @Override
+ public R<TParkingRecord> getParkingRecordById(Long id) {
+ return R.fail("根据id获取数失败:" + throwable.getMessage());
+ }
+
+ @Override
+ public void addParkingRecord(TParkingRecord parkingRecord) {
+ }
+ };
+ }
+}
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/SiteFallbackFactory.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/SiteFallbackFactory.java
index b4cdc47..d33b267 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/SiteFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/SiteFallbackFactory.java
@@ -2,7 +2,9 @@
import com.ruoyi.chargingPile.api.dto.GetSiteListDTO;
import com.ruoyi.chargingPile.api.feignClient.SiteClient;
+import com.ruoyi.chargingPile.api.model.Partner;
import com.ruoyi.chargingPile.api.model.Site;
+import com.ruoyi.chargingPile.api.model.TChargingPile;
import com.ruoyi.common.core.domain.R;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -25,7 +27,12 @@
public SiteClient create(Throwable throwable) {
log.error("站点调用失败:{}", throwable.getMessage());
return new SiteClient() {
-
+
+ @Override
+ public R<List<TChargingPile>> getPileListBySiteId(Integer siteId) {
+ return R.fail("根据站点id 查询所有充电桩:" + throwable.getMessage());
+ }
+
@Override
public R<List<Site>> getSiteByIds(List<Integer> ids) {
return R.fail("根据id集合获取站点数据调用失败:" + throwable.getMessage());
@@ -40,6 +47,12 @@
public R<List<GetSiteListDTO>> getSiteListByUserId(Long userId) {
return null;
}
+
+ @Override
+ public R<Partner> getPartnerR(Integer id) {
+ return R.fail("根据合作商id获取合作商详情失败:" + throwable.getMessage());
+
+ }
};
}
}
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ParkingLotClient.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ParkingLotClient.java
index bc3338a..fea8b39 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ParkingLotClient.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ParkingLotClient.java
@@ -34,5 +34,13 @@
@PostMapping(value = "/t-parking-lot/getRecordAmount")
public R<BigDecimal> getRecordAmount(@RequestParam("sixBefore") LocalDate sixBefore);
-
+
+
+ /**
+ * 根据停车场标识查询停车场
+ * @param appKey
+ * @return
+ */
+ @PostMapping(value = "/t-parking-lot/getParkingLotByAppKey")
+ R<TParkingLot> getParkingLotByAppKey(@RequestParam("appKey") String appKey);
}
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ParkingRecordClient.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ParkingRecordClient.java
new file mode 100644
index 0000000..b86ad6d
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ParkingRecordClient.java
@@ -0,0 +1,54 @@
+package com.ruoyi.chargingPile.api.feignClient;
+
+import com.ruoyi.chargingPile.api.factory.ParkingRecordFallbackFactory;
+import com.ruoyi.chargingPile.api.model.TParkingRecord;
+import com.ruoyi.chargingPile.api.vo.GetParkingRecord;
+import com.ruoyi.common.core.constant.ServiceNameConstants;
+import com.ruoyi.common.core.domain.R;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/9/5 14:05
+ */
+@FeignClient(contextId = "ParkingRecordClient", value = ServiceNameConstants.CHARGINGPILE_SERVICE, fallbackFactory = ParkingRecordFallbackFactory.class)
+public interface ParkingRecordClient {
+
+
+ /**
+ * 根据车牌和状态查询停车数据
+ * @param query
+ * @return
+ */
+ @PostMapping("/t-parking-record/getParkingRecord")
+ R<TParkingRecord> getParkingRecord(@RequestBody GetParkingRecord query);
+
+
+ /**
+ * 修改停车数据
+ * @param parkingRecord
+ */
+ @PostMapping("/t-parking-record/updateParkingRecord")
+ void updateParkingRecord(@RequestBody TParkingRecord parkingRecord);
+
+
+ /**
+ * 根据id获取数据
+ * @param id
+ * @return
+ */
+ @PostMapping("/t-parking-record/getParkingRecordById")
+ R<TParkingRecord> getParkingRecordById(@RequestParam("id") Long id);
+
+
+ /**
+ * 添加数据
+ * @param parkingRecord
+ */
+ @PostMapping("/t-parking-record/addParkingRecord")
+ void addParkingRecord(@RequestBody TParkingRecord parkingRecord);
+
+}
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/SiteClient.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/SiteClient.java
index a56392f..c311954 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/SiteClient.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/SiteClient.java
@@ -2,14 +2,13 @@
import com.ruoyi.chargingPile.api.dto.GetSiteListDTO;
import com.ruoyi.chargingPile.api.factory.SiteFallbackFactory;
+import com.ruoyi.chargingPile.api.model.Partner;
import com.ruoyi.chargingPile.api.model.Site;
+import com.ruoyi.chargingPile.api.model.TChargingPile;
import com.ruoyi.common.core.constant.ServiceNameConstants;
import com.ruoyi.common.core.domain.R;
import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.*;
import java.util.List;
@@ -19,6 +18,8 @@
*/
@FeignClient(contextId = "SiteClient", value = ServiceNameConstants.CHARGINGPILE_SERVICE, fallbackFactory = SiteFallbackFactory.class)
public interface SiteClient {
+ @GetMapping("/site/getPileListBySiteId/{siteId}")
+ public R<List<TChargingPile>> getPileListBySiteId(@PathVariable("siteId")Integer siteId);
/**
* 根据id集合获取数据
@@ -37,4 +38,6 @@
@GetMapping("/site/getSiteList/byUserId")
R<List<GetSiteListDTO>> getSiteListByUserId(@RequestParam("userId") Long userId);
+ @GetMapping("/getPartnerR/{id}")
+ R<Partner> getPartnerR(@PathVariable("id") Integer id);
}
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TParkingRecord.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TParkingRecord.java
index 889907b..cead23c 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TParkingRecord.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TParkingRecord.java
@@ -39,11 +39,13 @@
@ApiModelProperty(value = "车牌号")
@TableField("license_plate")
private String licensePlate;
+
@TableField(exist = false)
private String name;
+
@TableField(exist = false)
-
private String uid;
+
@ApiModelProperty(value = "订单编号")
@TableField("code")
private String code;
@@ -87,6 +89,26 @@
@ApiModelProperty(value = "添加时间")
@TableField("create_time")
private LocalDateTime createTime;
+
+ @ApiModelProperty(value = "超时占位费")
+ @TableField("timeout_amount")
+ private BigDecimal timeoutAmount;
+
+ @ApiModelProperty(value = "电话")
+ @TableField("phone")
+ private String phone;
+
+ @ApiModelProperty(value = "免费时长(分钟)")
+ @TableField("free_duration")
+ private Integer freeDuration;
+
+ @ApiModelProperty(value = "免费金额")
+ @TableField("free_amount")
+ private BigDecimal freeAmount;
+
+ @ApiModelProperty(value = "车场流水号")
+ @TableField("serialnumber")
+ private String serialnumber;
}
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/query/ParkingRecordQuery.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/query/ParkingRecordQuery.java
new file mode 100644
index 0000000..224a867
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/query/ParkingRecordQuery.java
@@ -0,0 +1,26 @@
+package com.ruoyi.chargingPile.api.query;
+
+import com.ruoyi.common.core.query.TimeRangePageQuery;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@ApiModel(value = "停车缴费订单Query")
+public class ParkingRecordQuery extends TimeRangePageQuery {
+
+ @ApiModelProperty(value = "站点id")
+ private Integer siteId;
+
+ @ApiModelProperty(value = "订单编号")
+ private String code;
+
+ @ApiModelProperty(value = "车牌号")
+ private String licensePlate;
+
+ @ApiModelProperty(value = "停车场id集合 前端忽略")
+ private List<Integer> lotIds;
+
+}
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/GetParkingRecord.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/GetParkingRecord.java
new file mode 100644
index 0000000..40259a7
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/GetParkingRecord.java
@@ -0,0 +1,19 @@
+package com.ruoyi.chargingPile.api.vo;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/9/5 14:16
+ */
+@Data
+public class GetParkingRecord {
+ /**
+ * 车牌
+ */
+ private String licensePlate;
+ /**
+ * 状态(1=已进场,2=已出场,3=已缴费出场)
+ */
+ private Integer status;
+}
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/TParkingRecordPageInfoVO.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/TParkingRecordPageInfoVO.java
new file mode 100644
index 0000000..e27db5c
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/TParkingRecordPageInfoVO.java
@@ -0,0 +1,31 @@
+package com.ruoyi.chargingPile.api.vo;
+
+import com.ruoyi.common.core.web.page.PageInfo;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+@Data
+@ApiModel(value = "停车记录分页VO")
+public class TParkingRecordPageInfoVO implements Serializable {
+
+ @ApiModelProperty(value = "订单数")
+ private Integer orderCount;
+
+ @ApiModelProperty(value = "超时占位费")
+ private BigDecimal timeoutAmountSum;
+
+ @ApiModelProperty(value = "超时占用时长")
+ private Integer feeDurationSum;
+
+ @ApiModelProperty(value = "总占用时长")
+ private Integer parkingDurationSum;
+
+ @ApiModelProperty(value = "列表")
+ private PageInfo<TParkingRecordVO> parkingRecordVOS;
+
+
+}
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/TParkingRecordVO.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/TParkingRecordVO.java
new file mode 100644
index 0000000..623192c
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/TParkingRecordVO.java
@@ -0,0 +1,23 @@
+package com.ruoyi.chargingPile.api.vo;
+
+import com.ruoyi.chargingPile.api.model.TParkingRecord;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+@ApiModel(value = "停车记录VO")
+public class TParkingRecordVO extends TParkingRecord {
+
+ @ApiModelProperty(value = "停车费")
+ private BigDecimal parkingFee;
+
+ @ApiModelProperty(value = "收费时长")
+ private Integer feeDuration;
+
+ @ApiModelProperty(value = "站点名称")
+ private String siteName;
+
+}
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/ruoyi-api/ruoyi-api-chargingPile/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
index 5e160da..440d517 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -3,4 +3,5 @@
com.ruoyi.chargingPile.api.factory.ParkingLotFallbackFactory
com.ruoyi.chargingPile.api.factory.ChargingGunFallbackFactory
com.ruoyi.chargingPile.api.factory.AccountingStrategyDetailFallbackFactory
-com.ruoyi.chargingPile.api.factory.AccountingStrategyFallbackFactory
\ No newline at end of file
+com.ruoyi.chargingPile.api.factory.AccountingStrategyFallbackFactory
+com.ruoyi.chargingPile.api.factory.ParkingRecordFallbackFactory
\ No newline at end of file
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/UploadRealTimeMonitoringDataFallbackFactory.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/UploadRealTimeMonitoringDataFallbackFactory.java
index 2586a69..d39a68e 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/UploadRealTimeMonitoringDataFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/UploadRealTimeMonitoringDataFallbackFactory.java
@@ -31,7 +31,12 @@
public R<UploadRealTimeMonitoringData> chargingOrderInfo(String orderId) {
return R.fail("查询充电桩实时监测数据失败:" + throwable.getMessage());
}
-
+
+ @Override
+ public R<List<UploadRealTimeMonitoringData>> getOrderInfoByCodes(String orderId) {
+ return R.fail("根据订单编号s获取所有监测数据失败:" + throwable.getMessage());
+ }
+
@Override
public R<List<UploadRealTimeMonitoringData>> getDataByOrderCode(String code) {
return R.fail("根据订单编号获取所有监测数据失败:" + throwable.getMessage());
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/UploadRealTimeMonitoringDataClient.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/UploadRealTimeMonitoringDataClient.java
index 902dff5..5ceab1f 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/UploadRealTimeMonitoringDataClient.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/UploadRealTimeMonitoringDataClient.java
@@ -25,7 +25,14 @@
*/
@PostMapping("/uploadRealTimeMonitoringData/getOrderInfoByCode")
R<UploadRealTimeMonitoringData> chargingOrderInfo(String orderId);
-
+
+ /**
+ * 批量查询
+ * @param orderId
+ * @return
+ */
+ @PostMapping(value = "/uploadRealTimeMonitoringData/getOrderInfoByCodes")
+ public R<List<UploadRealTimeMonitoringData>> getOrderInfoByCodes(@RequestParam("orderId") String orderId);
/**
* 根据订单编号获取所有监测数据
* @param code
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/dto/SettlementConfirmAdd.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/dto/SettlementConfirmAdd.java
new file mode 100644
index 0000000..fe67ee4
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/dto/SettlementConfirmAdd.java
@@ -0,0 +1,26 @@
+package com.ruoyi.order.api.dto;
+
+import com.ruoyi.common.core.web.page.BasePage;
+import com.ruoyi.order.api.model.TSettlementConfirm;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@ApiModel(value = "SettlementConfirmAdd生成结算确认表对象",description = "管理后台-财务结算生成结算确认表对象")
+public class SettlementConfirmAdd {
+ @ApiModelProperty(value = "站点id")
+ private Integer siteId;
+ @ApiModelProperty(value = "费用归属日期类型 1开始 2结束")
+ private Integer type;
+ @ApiModelProperty(value = "开始时间2020-01-01 00:00:00")
+ private String startTime;
+ @ApiModelProperty(value = "结束时间2020-01-01 23:59:59")
+ private String endTime;
+ @ApiModelProperty(value = "点击去生成 传1 填完表格数据点击保存 传2")
+ private Integer state;
+ @ApiModelProperty(value = "保存的数据")
+ private TSettlementConfirm data;
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java
index e713d31..960f451 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java
@@ -6,9 +6,12 @@
import com.ruoyi.order.api.feignClient.ChargingOrderClient;
import com.ruoyi.order.api.model.ChargingListQuery;
import com.ruoyi.order.api.model.TChargingOrder;
+import com.ruoyi.order.api.model.TSettlementConfirm;
import com.ruoyi.order.api.query.TChargingCountQuery;
import com.ruoyi.order.api.query.UploadRealTimeMonitoringDataQuery;
import com.ruoyi.order.api.vo.ChargingBillVO;
+import com.ruoyi.order.api.vo.GetChargingOrderByLicensePlate;
+import com.ruoyi.order.api.vo.SettlementTotalVO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.openfeign.FallbackFactory;
@@ -90,6 +93,21 @@
public void excelEndCharge(String code) {
}
+
+ @Override
+ public R<TChargingOrder> getChargingOrderByLicensePlate(GetChargingOrderByLicensePlate query) {
+ return R.fail("根据车牌号和时间查询有效的充电数据失败:" + throwable.getMessage());
+ }
+
+ @Override
+ public R<TSettlementConfirm> downloadSettlement(String uid) {
+ return R.fail("通过id查询结算确认失败:" + throwable.getMessage());
+ }
+
+ @Override
+ public R<SettlementTotalVO> settlementTotalR(String time) {
+ return R.fail("查询结算汇总表导出列表失败:" + throwable.getMessage());
+ }
};
}
}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/OrderFallbackFactory.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/OrderFallbackFactory.java
index 35c5873..61b14b5 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/OrderFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/OrderFallbackFactory.java
@@ -3,9 +3,11 @@
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.dto.ExchangeDto;
import com.ruoyi.order.api.feignClient.OrderClient;
+import com.ruoyi.order.api.model.ChargingListQuery;
import com.ruoyi.order.api.model.TShoppingOrder;
import com.ruoyi.order.api.model.TVipOrder;
import com.ruoyi.order.api.query.TActivityStatisticsQuery;
+import com.ruoyi.order.api.vo.AccountListVO;
import com.ruoyi.order.api.vo.TActivityVO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -73,6 +75,11 @@
return R.fail("查询活动费用统计失败:" + cause.getMessage());
}
+ @Override
+ public R<AccountListVO> accountBillList(ChargingListQuery dto) {
+ return R.fail("账户结算账单导出失败:" + cause.getMessage());
+ }
+
};
}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java
index 225e498..80529c0 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java
@@ -7,10 +7,13 @@
import com.ruoyi.order.api.factory.ChargingOrderFallbackFactory;
import com.ruoyi.order.api.model.ChargingListQuery;
import com.ruoyi.order.api.model.TChargingOrder;
+import com.ruoyi.order.api.model.TSettlementConfirm;
import com.ruoyi.order.api.query.TChargingCountQuery;
import com.ruoyi.order.api.query.UploadRealTimeMonitoringDataQuery;
import com.ruoyi.order.api.vo.ChargingBillVO;
+import com.ruoyi.order.api.vo.SettlementTotalVO;
import io.swagger.annotations.ApiOperation;
+import com.ruoyi.order.api.vo.GetChargingOrderByLicensePlate;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
@@ -95,4 +98,24 @@
*/
@PostMapping("/t-charging-order/excelEndCharge")
void excelEndCharge(@RequestParam("code") String code);
+
+
+ /**
+ * 根据车牌号和时间查询有效的充电数据
+ * @param query
+ * @return
+ */
+ @PostMapping("/t-charging-order/getChargingOrderByLicensePlate")
+ R<TChargingOrder> getChargingOrderByLicensePlate(@RequestBody GetChargingOrderByLicensePlate query);
+
+ /**
+ * 获取充电结算记录
+ * @param uid
+ * @return
+ */
+ @GetMapping(value = "/financial/settlement/downloadSettlement/{uid}")
+ public R<TSettlementConfirm> downloadSettlement(@PathVariable("uid") String uid);
+
+ @GetMapping(value = "/financial/settlement/settlementTotalR")
+ public R<SettlementTotalVO> settlementTotalR(String time);
}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/OrderClient.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/OrderClient.java
index c0f9cd8..c49e25f 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/OrderClient.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/OrderClient.java
@@ -4,10 +4,13 @@
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.dto.ExchangeDto;
import com.ruoyi.order.api.factory.OrderFallbackFactory;
+import com.ruoyi.order.api.model.ChargingListQuery;
import com.ruoyi.order.api.model.TShoppingOrder;
import com.ruoyi.order.api.model.TVipOrder;
import com.ruoyi.order.api.query.TActivityStatisticsQuery;
+import com.ruoyi.order.api.vo.AccountListVO;
import com.ruoyi.order.api.vo.TActivityVO;
+import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
@@ -50,5 +53,8 @@
*/
@PostMapping(value = "/t-exchange-order/activityStatistics")
public R<TActivityVO> activityStatistics(@RequestBody TActivityStatisticsQuery dto);
+ @PostMapping(value = "/chargingBill/accountBillList")
+ @ApiOperation(value = "列表查询", tags = {"管理后台-账户结算账单"})
+ R<AccountListVO> accountBillList(@RequestBody ChargingListQuery dto);
}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/ChargingListQuery.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/ChargingListQuery.java
index 10e711c..4b32bce 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/ChargingListQuery.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/ChargingListQuery.java
@@ -9,14 +9,38 @@
import java.util.List;
@Data
-@ApiModel(value = "充电账单列表查询参数")
+@ApiModel("充电时段统计DTO")
public class ChargingListQuery extends BasePage {
- @ApiModelProperty("订单分类 1全站 2各个站点")
- private String type;
- @ApiModelProperty("账单周期2020-01-01 00:00:00 - 2020-01-01 23:59:59")
- private String startTime;
- @ApiModelProperty("1已出账 2未出账")
+ @ApiModelProperty("订单编号")
+ private String code;
+
+ @ApiModelProperty("电站id")
+ private Integer siteId;
+ @ApiModelProperty("状态(0=未知,1=等待中,2=启动中,3=充电中,4=停止中,5=已结束)")
+ private Integer status;
+ @ApiModelProperty("订单分类(1全站 2各个站点)")
+ private Integer type;
+ @ApiModelProperty("状态(1未出账 2已出账)")
private Integer state;
@ApiModelProperty("uid 前端忽略")
private String uid;
+
+ @ApiModelProperty("手机号")
+ private String phone;
+ @ApiModelProperty("车牌号")
+ private String licensePlate;
+
+ @ApiModelProperty("订单类型(1=充电订单(小程序),2=充电订单(刷卡))")
+ private Integer orderType;
+
+ @ApiModelProperty("开始时间 2020-01-01 12:00:00 - 2020-01-01 23:00:00")
+ private String startTime;
+
+ @ApiModelProperty("结束时间 2020-01-01 12:00:00 - 2020-01-01 23:00:00")
+ private String endTime;
+ @ApiModelProperty("用户ids 前端忽略")
+ private List<Long> userIds;
+ @ApiModelProperty("车辆ids 前端忽略")
+ private List<Long> carIds;
+
}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TSettlementConfirm.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TSettlementConfirm.java
new file mode 100644
index 0000000..796d4a9
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TSettlementConfirm.java
@@ -0,0 +1,200 @@
+package com.ruoyi.order.api.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.web.domain.BasePojo;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author xiaochen
+ * @since 2024-08-07
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("t_settlement confirm")
+@ApiModel(value="TSettlementConfirm对象", description="")
+public class TSettlementConfirm extends BasePojo {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty(value = "主键")
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty(value = "站点id")
+ @TableField("site_id")
+ private Integer siteId;
+ @ApiModelProperty(value = "合作商id")
+ @TableField("partner_id")
+ private Integer partnerId;
+ @ApiModelProperty(value = "结算电费备注")
+ @TableField("remark")
+ private String remark;
+ @ApiModelProperty(value = "结算服务费备注")
+ @TableField("service_remark")
+ private String serviceRemark;
+
+ @ApiModelProperty(value = "计量电量(电量合计)")
+ @TableField("metering_electronic")
+ private BigDecimal meteringElectronic;
+ @ApiModelProperty(value = "充电电量")
+ @TableField("charging_electronic")
+ private BigDecimal chargingElectronic;
+ @ApiModelProperty(value = "电损电量")
+ @TableField("loss_electronic")
+ private BigDecimal lossElectronic;
+ @ApiModelProperty(value = "收入合计")
+ @TableField("收入合计")
+ private BigDecimal income;
+
+ @ApiModelProperty(value = "场地费")
+ @TableField("venue")
+ private BigDecimal venue;
+ @ApiModelProperty(value = "计量电费")
+ @TableField("metering")
+ private BigDecimal metering;
+ @ApiModelProperty(value = "清洁费")
+ @TableField("clean")
+ private BigDecimal clean;
+ @ApiModelProperty(value = "日常维护费")
+ @TableField("maintain")
+ private BigDecimal maintain;
+ @ApiModelProperty(value = "成本")
+ @TableField("cost")
+ private BigDecimal cost;
+ @ApiModelProperty(value = "合计可分配金额")
+ @TableField("distribution")
+ private BigDecimal distribution;
+ @ApiModelProperty(value = "利润")
+ @TableField("profit_money")
+ private BigDecimal profitMoney;
+ @ApiModelProperty(value = "新能源利润")
+ @TableField("new_money")
+ private BigDecimal newMoney;
+ @ApiModelProperty(value = "新能源结算金额")
+ @TableField("new_Settlement")
+ private BigDecimal newSettlement;
+
+ @ApiModelProperty(value = "供电局结算电费")
+ @TableField("supply_electronic")
+ private BigDecimal supplyElectronic;
+ @ApiModelProperty(value = "合作商承担电损占比")
+ @TableField("proportion_partner")
+ private BigDecimal proportionPartner;
+ @ApiModelProperty(value = "承担金额")
+ @TableField("proportion_money")
+ private BigDecimal proportionMoney;
+ @ApiModelProperty(value = "本期结算电费总金额 (实际电费转账)")
+ @TableField("total_electronic")
+ private BigDecimal totalElectronic;
+ @ApiModelProperty(value = "本期结算服务费总金额(实际服务费转账)")
+ @TableField("total_service")
+ private BigDecimal totalService;
+ @ApiModelProperty(value = "合作商充电服务费根据合同约定分成比例")
+ @TableField("service_partner")
+ private BigDecimal servicePartner;
+ @ApiModelProperty(value = "合作商充电服务费根据合同约定分成金额")
+ @TableField("service_money")
+ private BigDecimal serviceMoney;
+
+ @ApiModelProperty(value = "三方收费(合计三方平台收费)")
+ @TableField("sharing_amount")
+ private BigDecimal sharingAmount;
+ @ApiModelProperty(value = " 交易手续费 三方收费*0.06%")
+ @TableField("commission_amount")
+ private BigDecimal commissionAmount;
+ @ApiModelProperty(value = "充电电费计费(平台合计电费)")
+ @TableField("electrovalence")
+ private BigDecimal electrovalence;
+ @ApiModelProperty(value = "充电服务费计费(实收服务费)")
+ @TableField("service_charge")
+ private BigDecimal serviceCharge;
+ @ApiModelProperty(value = "交易手续费计费")
+ @TableField("order_commission")
+ private BigDecimal orderCommission;
+ @ApiModelProperty(value = "会员抵扣")
+ @TableField("vip_discount")
+ private BigDecimal vipDiscount;
+ @ApiModelProperty(value = "优惠券抵扣")
+ @TableField("coupon_discount")
+ private BigDecimal couponDiscount;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ @ApiModelProperty(value = "类型(1=开始,2=结束)")
+ @TableField("type")
+ private Integer type;
+ @ApiModelProperty(value = "开始时间")
+ @TableField("start_time")
+ private LocalDateTime startTime;
+ @ApiModelProperty(value = "结束时间")
+ @TableField("end_time")
+ private LocalDateTime endTime;
+ @ApiModelProperty(value = "站点名称")
+ @TableField(exist = false)
+ private String siteName;
+ @ApiModelProperty(value = "合作商名称")
+ @TableField(exist = false)
+ private String partnerName;
+
+ @ApiModelProperty(value = "uid")
+ @TableField(exist = false)
+ private String uid;
+
+ @ApiModelProperty(value = "结账日期 2024年09月06日17:10:06至2024年09月06日17:10:06")
+ @TableField(exist = false)
+ private String time;
+ @ApiModelProperty(value = "充电记录明细")
+ @TableField(exist = false)
+ private List<TChargingOrder> list;
+ @ApiModelProperty(value = "收入合计涨幅/跌幅 正数为涨幅负数为跌幅 字段为空 说明没有上月记录 不展示涨幅跌幅")
+ @TableField(exist = false)
+ private String incomePercentage;
+ @ApiModelProperty(value = "总利润涨幅/跌幅 正数为涨幅负数为跌幅 字段为空 说明没有上月记录 不展示涨幅跌幅")
+ @TableField(exist = false)
+ private String totalPercentage;
+ @ApiModelProperty(value = "利用率")
+ @TableField(exist = false)
+ private String rate;
+ @ApiModelProperty(value = "参与电力市场交易退补电费")
+ @TableField(exist = false)
+ private Integer electronicRefund;
+
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/SettlementListQuery.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/SettlementListQuery.java
new file mode 100644
index 0000000..7117147
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/SettlementListQuery.java
@@ -0,0 +1,25 @@
+package com.ruoyi.order.api.query;
+
+import com.ruoyi.common.core.web.page.BasePage;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@ApiModel(value = "SettlementListQuery结算表记录列表查询对象",description = "管理后台-财务结算-结算表记录列表查询对")
+public class SettlementListQuery extends BasePage {
+
+ @ApiModelProperty(value = "类型(1=开始,2=结束)")
+ private Integer type;
+ @ApiModelProperty(value = "站点ids 选择全部 不传")
+ private List<Integer> siteIds;
+ @ApiModelProperty(value = "合作商id ")
+ private Integer partnerId;
+ @ApiModelProperty(value = "开始时间2020-01-01 00:00:00")
+ private String startTime;
+ @ApiModelProperty(value = "结束时间2021-01-01 23:59:59")
+ private String endTime;
+
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/AccountListVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/AccountListVO.java
new file mode 100644
index 0000000..f2ea33c
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/AccountListVO.java
@@ -0,0 +1,31 @@
+package com.ruoyi.order.api.vo;
+
+import com.ruoyi.common.core.web.page.PageInfo;
+import com.ruoyi.order.api.model.TChargingBill;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+@ApiModel(value = "ChargingBillListVO对象",description = "充电算帐单列表VO")
+public class AccountListVO{
+ @ApiModelProperty(value = "账单数量")
+ private Integer billCount;
+ @ApiModelProperty(value = "总入账金额")
+ private BigDecimal totalAmount;
+ @ApiModelProperty(value = "总支付结算金额")
+ private BigDecimal paymentAmount;
+ @ApiModelProperty(value = "总退款结算金额")
+ private BigDecimal refundAmount;
+ @ApiModelProperty(value = "平台手续费")
+ private BigDecimal commissionAmount;
+ @ApiModelProperty(value = "分佣")
+ private BigDecimal sharingAmount;
+ @ApiModelProperty(value = "列表数据")
+ private PageInfo<ChargingBillListVO> list;
+
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/AccountVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/AccountVO.java
new file mode 100644
index 0000000..c03dc79
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/AccountVO.java
@@ -0,0 +1,85 @@
+package com.ruoyi.order.api.vo;
+
+import com.ruoyi.common.core.web.page.PageInfo;
+import com.ruoyi.order.api.model.TChargingOrder;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+@ApiModel(value = "ChargingBillVO对象",description = "充电算帐单")
+public class AccountVO {
+ @ApiModelProperty(value = "账单编号")
+ private String code;
+ @ApiModelProperty(value = "账户类型")
+ private String accountType;
+ @ApiModelProperty(value = "账单类型")
+ private String orderType;
+ @ApiModelProperty(value = "账单分类")
+ private String type;
+// @ApiModelProperty(value = "账单周期")
+// private String accountType;
+// @ApiModelProperty(value = "站点名称")
+// private String accountType;
+// @ApiModelProperty(value = "账户类型")
+// private String accountType;
+// @ApiModelProperty(value = "账户类型")
+// private String accountType;
+// @ApiModelProperty(value = "账户类型")
+// private String accountType;
+// @ApiModelProperty(value = "账户类型")
+// private String accountType;
+// @ApiModelProperty(value = "账户类型")
+// private String accountType;
+// @ApiModelProperty(value = "账户类型")
+// private String accountType;
+// @ApiModelProperty(value = "账户类型")
+// private String accountType;
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+// @ApiModelProperty(value = "订单总金额")
+// private BigDecimal orderAmount;
+// @ApiModelProperty(value = "累计电费")
+// private BigDecimal electrovalence;
+// @ApiModelProperty(value = "累计服务费")
+// private BigDecimal serviceCharge;
+// @ApiModelProperty(value = "订单数量")
+// private Integer orderCount;
+// @ApiModelProperty(value = "平台手续费")
+// private BigDecimal commissionAmount;
+// @ApiModelProperty(value = "三方平台分佣")
+// private BigDecimal sharingAmount;
+// @ApiModelProperty(value = "优惠抵扣")
+// private BigDecimal discount;
+// @ApiModelProperty(value = "账单分类 1全站 2各个站点 前端忽略")
+// private String category;
+// @ApiModelProperty(value = "账单类型 月结 前端忽略")
+// private String type;
+// @ApiModelProperty(value = "站点名称 前端忽略")
+// private String siteName;
+// @ApiModelProperty(value = "账单周期 前端忽略")
+// private String billWeek;
+// @ApiModelProperty(value = "账单生成日期 前端忽略")
+// private String createTime;
+// @ApiModelProperty(value = "账单编号 前端忽略")
+// private String code;
+// @ApiModelProperty(value = "充电时长 前端忽略")
+// private String chargingTime;
+
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingBillListVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingBillListVO.java
index 47c25c5..78139c6 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingBillListVO.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingBillListVO.java
@@ -20,8 +20,12 @@
private Integer orderCount;
@ApiModelProperty(value = "站点名称")
private String siteName;
- @ApiModelProperty(value = "实收金额")
+ @ApiModelProperty(value = "实收金额(支付结算金额)")
private BigDecimal paymentAmount;
+ @ApiModelProperty(value = "退款结算金额")
+ private BigDecimal refundAmount;
+ @ApiModelProperty(value = "平台分佣")
+ private BigDecimal sharingAmount;
@ApiModelProperty(value = "总金额")
private BigDecimal orderAmount;
@ApiModelProperty(value = "累计电费")
@@ -30,8 +34,6 @@
private BigDecimal serviceCharge;
@ApiModelProperty(value = "平台手续费")
private BigDecimal commissionAmount;
- @ApiModelProperty(value = "平台分佣")
- private BigDecimal sharingAmount;
@ApiModelProperty(value = "充电电流 度")
private BigDecimal chargingCapacity;
}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingBillVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingBillVO.java
index 9ea35ee..2000729 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingBillVO.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingBillVO.java
@@ -18,6 +18,8 @@
private BigDecimal paymentAmount;
@ApiModelProperty(value = "订单总金额")
private BigDecimal orderAmount;
+ @ApiModelProperty(value = "总退款金额")
+ private BigDecimal refundAmount;
@ApiModelProperty(value = "累计电费")
private BigDecimal electrovalence;
@ApiModelProperty(value = "累计服务费")
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderTimeVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderTimeVO.java
index eef3f64..02a5021 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderTimeVO.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderTimeVO.java
@@ -31,4 +31,6 @@
private String electronicProportion;
@ApiModelProperty(value = "列表数据")
private PageInfo<ChargingOrderListVO> list;
+ @ApiModelProperty(value = "导出列表数据")
+ private List<ChargingOrderListVO> exportList;
}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/GetChargingOrderByLicensePlate.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/GetChargingOrderByLicensePlate.java
new file mode 100644
index 0000000..eeb0421
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/GetChargingOrderByLicensePlate.java
@@ -0,0 +1,24 @@
+package com.ruoyi.order.api.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/9/5 14:25
+ */
+@Data
+public class GetChargingOrderByLicensePlate {
+ /**
+ * 车牌
+ */
+ private String licensePlate;
+ /**
+ * 开始时间
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime startTime;
+
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/SettlementTotalVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/SettlementTotalVO.java
new file mode 100644
index 0000000..bbe3edf
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/SettlementTotalVO.java
@@ -0,0 +1,21 @@
+package com.ruoyi.order.api.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.order.api.model.TChargingOrderAccountingStrategy;
+import com.ruoyi.order.api.model.TSettlementConfirm;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Data
+@ApiModel(value = "SettlementTotalVO对象",description = "结算汇总表列表VO")
+public class SettlementTotalVO {
+ @ApiModelProperty(value = "列表数据")
+ List<TSettlementConfirm> list1;
+ @ApiModelProperty(value = "合计数据")
+ List<TSettlementConfirm> list2;
+}
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/VipClient.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/VipClient.java
index 2082451..e958ad7 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/VipClient.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/VipClient.java
@@ -33,7 +33,9 @@
* @return
*/
@PostMapping("/vip/getInfo1")
- public R<TVip> getInfo1(@RequestParam("id") Integer id);
+ R<TVip> getInfo1(@RequestParam("id") Integer id);
+
+
@PostMapping(value = "/vip/getInfo")
R<TVip> getInfo(@RequestParam("id") Integer id);
diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java
index 77abd3e..1cc1d79 100644
--- a/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java
+++ b/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java
@@ -9,6 +9,7 @@
import io.seata.spring.annotation.GlobalTransactional;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import com.ruoyi.auth.form.LoginBody;
import com.ruoyi.auth.form.RegisterBody;
@@ -48,11 +49,11 @@
HashMap<String, Object> map = new HashMap<>();
map.put("token", tokenService.createToken(userInfo));
List<SysRole> roles = userInfo.getSysUser().getRoles();
-// if(CollectionUtils.isEmpty(roles)){
-// return R.fail("请关联角色!");
-// }
+ if(CollectionUtils.isEmpty(roles)){
+ return R.fail("请关联角色!");
+ }
-// map.put("roleName",roles.get(0).getRoleName());
+ map.put("roleName",roles.get(0).getRoleName());
map.put("info", userInfo);
// 修改用户最后登录时间
SysUser sysUser = new SysUser();
diff --git a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java
index 4cce577..d748b39 100644
--- a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java
+++ b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java
@@ -94,7 +94,7 @@
public LoginUserApplet getLoginUserApplet() {
LoginUserApplet loginUserAppletToken = getLoginUserAppletToken(ServletUtils.getRequest());
if (loginUserAppletToken == null) {
- throw new UserAppletException("登录失效,请重新登录!", 401);
+ throw new RuntimeException("令牌已过期,请重新登录!");
}
return loginUserAppletToken;
}
@@ -130,7 +130,11 @@
* @return 用户信息
*/
public LoginUser getLoginUser() {
- return getLoginUser(ServletUtils.getRequest());
+ LoginUser loginUser = getLoginUser(ServletUtils.getRequest());
+ if (loginUser == null) {
+ throw new RuntimeException("令牌已过期,请重新登录!");
+ }
+ return loginUser;
}
/**
@@ -209,10 +213,10 @@
public void refreshToken1(LoginUserApplet dto) {
dto.setLoginTime(System.currentTimeMillis());
- dto.setExpireTime(dto.getLoginTime() + expireTime * MILLIS_MINUTE);
+ dto.setExpireTime(dto.getLoginTime() + expireAppletTime * MILLIS_MINUTE);
// 根据uuid将loginUser缓存
String userKey = getTokenKey(dto.getToken());
- redisService.setCacheObject(userKey, dto, expireTime, TimeUnit.MINUTES);
+ redisService.setCacheObject(userKey, dto, expireAppletTime, TimeUnit.MINUTES);
}
private String getTokenKey(String token) {
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserCarController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserCarController.java
index d438eb7..dda013b 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserCarController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserCarController.java
@@ -1,15 +1,13 @@
package com.ruoyi.account.controller;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.account.api.model.TAppUserCar;
import com.ruoyi.account.service.TAppUserCarService;
import com.ruoyi.common.core.domain.R;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
import java.util.List;
@@ -37,6 +35,18 @@
public R<List<TAppUserCar>> getCarByIds(@RequestBody List<Long> carIds){
return R.ok(appUserCarService.list(Wrappers.lambdaQuery(TAppUserCar.class).in(TAppUserCar::getId,carIds)));
}
+
+
+ /**
+ * 根据车牌号查询数据
+ * @param licensePlate
+ * @return
+ */
+ @PostMapping(value = "/t-app-user-car/getAppUserCarByLicensePlate")
+ public R<TAppUserCar> getAppUserCarByLicensePlate(@RequestParam("licensePlate") String licensePlate){
+ TAppUserCar one = appUserCarService.getOne(new LambdaQueryWrapper<TAppUserCar>().eq(TAppUserCar::getLicensePlate, licensePlate).eq(TAppUserCar::getDelFlag, 0));
+ return R.ok(one);
+ }
}
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserVipDetailController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserVipDetailController.java
index 690629f..47aab16 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserVipDetailController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserVipDetailController.java
@@ -51,8 +51,10 @@
List<TAppUserVipDetail> list = appUserVipDetailService.lambdaQuery().eq(TAppUserVipDetail::getAppUserId, userId).last(" and now() between start_time and end_time order by start_time desc").list();
for (TAppUserVipDetail tAppUserVipDetail : list) {
- TVip data = vipClient.getInfo1(tAppUserVipDetail.getVipId()).getData();
- tAppUserVipDetail.setVipName(data.getName());
+ if(null != tAppUserVipDetail.getVipId()){
+ TVip data = vipClient.getInfo1(tAppUserVipDetail.getVipId()).getData();
+ tAppUserVipDetail.setVipName(data.getName());
+ }
}
return R.ok(list);
}
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/GiveVipUtil.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/GiveVipUtil.java
index e5fdd18..ef92923 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/GiveVipUtil.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/GiveVipUtil.java
@@ -17,6 +17,7 @@
import javax.annotation.Resource;
import java.time.LocalDateTime;
+import java.util.ArrayList;
import java.util.List;
@Component
@@ -44,7 +45,10 @@
R<TVip> info = vipClient.getInfo1(vipId);
TVip vip = info.getData();
- List<SendCouponDto> javaList = JSON.parseArray(vip.getCoupon()).toJavaList(SendCouponDto.class);
+ List<SendCouponDto> javaList = new ArrayList<>();
+ if (vip.getCoupon()!=null) {
+ javaList = JSON.parseArray(vip.getCoupon()).toJavaList(SendCouponDto.class);
+ }
tAppUserVipDetail.setCouponIds(vip.getCoupon());
tAppUserVipDetail.setSendChargeNum(vip.getDiscountTimes());
@@ -80,16 +84,42 @@
}else {
nowUser.setVipEndTime(nowUser.getVipEndTime().plusDays(plusDay).minusDays(1));
//获取detail里结束时间大于当前时间的数据,并将enttime延长
- TAppUserVipDetail tAppUserVipDetail = tAppUserVipDetailService.lambdaQuery().eq(TAppUserVipDetail::getAppUserId, nowUser.getId()).orderByDesc(TAppUserVipDetail::getEndTime).last("limit 1").one();
+ TAppUserVipDetail tAppUserVipDetail = tAppUserVipDetailService.lambdaQuery().eq(TAppUserVipDetail::getVipId,vipId).eq(TAppUserVipDetail::getAppUserId, nowUser.getId()).orderByDesc(TAppUserVipDetail::getEndTime).last("limit 1").one();
+ if (tAppUserVipDetail!=null) {
+ List<TAppUserVipDetail> list = tAppUserVipDetailService.lambdaQuery().eq(TAppUserVipDetail::getAppUserId, nowUser.getId()).ge(TAppUserVipDetail::getStartTime, tAppUserVipDetail.getEndTime()).list();
+ for (TAppUserVipDetail appUserVipDetail : list) {
+ appUserVipDetail.setStartTime(appUserVipDetail.getStartTime().plusMonths(plusDay).minusDays(1));
+ appUserVipDetail.setEndTime(appUserVipDetail.getEndTime().plusMonths(plusDay).minusDays(1));
+ }
+ tAppUserVipDetailService.updateBatchById(list);
+ tAppUserVipDetail.setEndTime(tAppUserVipDetail.getEndTime().plusMonths(plusDay).minusDays(1));
-// TAppUserVipDetail newAppUser = new TAppUserVipDetail();
-// newAppUser.setAppUserId(nowUser.getId());
-// newAppUser.setStartTime(tAppUserVipDetail.getEndTime());
- tAppUserVipDetail.setEndTime(tAppUserVipDetail.getEndTime().plusMonths(plusDay).minusDays(1));
-// newAppUser.setVipId(vipId);
- tAppUserVipDetailService.updateById(tAppUserVipDetail);
-// tAppUserVipDetail.setEndTime(tAppUserVipDetail.getEndTime().plusDays(plusDay));
-// tAppUserVipDetailService.updateById(tAppUserVipDetail);
+ tAppUserVipDetailService.updateById(tAppUserVipDetail);
+ }else {
+ TAppUserVipDetail tAppUserVipDetail2 = tAppUserVipDetailService.lambdaQuery().eq(TAppUserVipDetail::getAppUserId, nowUser.getId()).orderByDesc(TAppUserVipDetail::getEndTime).last("limit 1").one();
+
+ TAppUserVipDetail tAppUserVipDetail1 = new TAppUserVipDetail();
+ tAppUserVipDetail1.setAppUserId(nowUser.getId());
+ tAppUserVipDetail1.setStartTime(tAppUserVipDetail2.getEndTime());
+ tAppUserVipDetail1.setEndTime(tAppUserVipDetail2.getEndTime().plusMonths(plusDay).minusDays(1));
+ tAppUserVipDetail1.setVipId(vipId);
+
+ R<TVip> info = vipClient.getInfo1(vipId);
+ TVip vip = info.getData();
+ List<SendCouponDto> javaList = new ArrayList<>();
+ if (vip.getCoupon()!=null) {
+ javaList = JSON.parseArray(vip.getCoupon()).toJavaList(SendCouponDto.class);
+ }
+
+ tAppUserVipDetail1.setCouponIds(vip.getCoupon());
+ tAppUserVipDetail1.setSendChargeNum(vip.getDiscountTimes());
+ tAppUserVipDetail1.setChargeNum(vip.getDiscountTimes());
+ tAppUserVipDetail1.setDiscountMoney(vip.getMaximumDeduction());
+ tAppUserVipDetail1.setSendMonth(1);
+ tAppUserVipDetailService.save(tAppUserVipDetail1);
+
+ }
+
}
}
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/PartnerController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/PartnerController.java
index 3c71cd9..7f3c920 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/PartnerController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/PartnerController.java
@@ -9,6 +9,7 @@
import com.ruoyi.chargingPile.api.query.SetPermissionConfiguration;
import com.ruoyi.chargingPile.dto.ResetPassword;
import com.ruoyi.chargingPile.service.IPartnerService;
+import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.common.security.utils.SecurityUtils;
@@ -68,6 +69,12 @@
Partner partner = partnerService.getPartner(id);
return AjaxResult.success(partner);
}
+ @ResponseBody
+ @GetMapping("/getPartnerR/{id}")
+ public R<Partner> getPartnerR(@PathVariable("id") Integer id){
+ Partner partner = partnerService.getPartner(id);
+ return R.ok(partner);
+ }
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java
index 1db4d7c..fc48e33 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java
@@ -82,6 +82,17 @@
@Resource
private ChargingOrderClient chargingOrderClient;
+
+ /**
+ * 根据站点id 查询所有充电桩
+ * @param siteId
+ * @return
+ */
+ @GetMapping("/getPileListBySiteId/{siteId}")
+ public R<List<TChargingPile>> getPileListBySiteId(@PathVariable("siteId")Integer siteId){
+
+ return R.ok(chargingPileService.lambdaQuery().eq(TChargingPile::getSiteId, siteId).list());
+ }
/**
* 小程序扫一扫
* @param number
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java
index ca22e94..98956eb 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java
@@ -1,7 +1,16 @@
package com.ruoyi.chargingPile.controller;
+import java.time.LocalDateTime;
import java.math.BigDecimal;
+
+import com.ruoyi.chargingPile.api.feignClient.SiteClient;
+import com.ruoyi.chargingPile.api.model.Partner;
+import com.ruoyi.chargingPile.api.model.Site;
+import com.ruoyi.common.core.utils.WebUtils;
import com.ruoyi.common.core.web.page.PageInfo;
+import com.ruoyi.order.api.feignClient.OrderClient;
import com.ruoyi.order.api.model.TChargingOrder;
+import com.ruoyi.order.api.model.TSettlementConfirm;
+import com.ruoyi.order.api.vo.AccountListVO;
import com.ruoyi.order.api.vo.ChargingBillListVO;
@@ -35,6 +44,7 @@
import com.ruoyi.order.api.feignClient.ChargingOrderClient;
import com.ruoyi.order.api.model.ChargingListQuery;
import com.ruoyi.order.api.vo.ChargingBillVO;
+import com.ruoyi.order.api.vo.SettlementTotalVO;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.codec.CharEncoding;
import org.springframework.beans.BeanUtils;
@@ -50,6 +60,8 @@
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.LinkedList;
import java.util.List;
import java.util.regex.Pattern;
@@ -70,6 +82,10 @@
private final RedisService redisService;
@Resource
private ChargingOrderClient chargingOrderClient;
+ @Resource
+ private OrderClient orderClient;
+ @Resource
+ private SiteClient siteClient;
@Autowired
public TApplyChargingPileController(TApplyChargingPileService applyChargingPileService, TokenService tokenService, RedisService redisService) {
@@ -212,9 +228,7 @@
applyChargingPileExportDto.setIs3("否");
}
exportDtos.add(applyChargingPileExportDto);
-
}
-
// excel模板封装
ExcelWriterBuilder excelWriterBuilder = EasyExcelFactory.write(response.getOutputStream());
InputStream stream = Thread.currentThread().getContextClassLoader().getResourceAsStream("template/" +"充电桩申请记录" + ".xlsx");
@@ -272,6 +286,124 @@
}
return R.ok();
}
+ @ApiOperation(value = "下载", tags = {"管理后台-账户结算账单"})
+ @PutMapping("/downloadAccount")
+ public R downloadAccount(@RequestBody ChargingListQuery dto,HttpServletResponse response)
+ {
+ AccountListVO data = orderClient.accountBillList(dto).getData();
+ try {
+ response.setCharacterEncoding(Constants.UTF8);
+ response.setContentType("application/vnd.ms-excel");
+ response.setHeader("Access-Control-Expose-Headers", "Content-disposition");
+ response.setHeader("Content-Disposition", "attachment;filename=" +
+ URLEncoder.encode("账户结算账单", CharEncoding.UTF_8) + ".xlsx");
+ } catch (UnsupportedEncodingException e) {
+ return R.fail("excel导出失败!");
+ }
+ try {
+ // excel模板封装
+ ExcelWriterBuilder excelWriterBuilder = EasyExcelFactory.write(response.getOutputStream());
+ InputStream stream = Thread.currentThread().getContextClassLoader().getResourceAsStream("template/" +"账户结算账单" + ".xlsx");
+ // 自动释放资源
+ try (ExcelWriter excelWriter = excelWriterBuilder.withTemplate(stream).build()) {
+ WriteSheet writeSheet = EasyExcel.writerSheet().build();
+ FillConfig fillConfig = FillConfig.builder().direction(WriteDirectionEnum.VERTICAL).build();
+ excelWriter.fill(new FillWrapper("data1", data.getList().getRecords()), fillConfig, writeSheet);
+ excelWriter.finish();
+ } catch (Exception e) {
+ return R.fail("excel导出失败!");
+ }
+ } catch (IOException e) {
+ return R.fail("excel导出失败!");
+ }
+ return R.ok();
+ }
+
+ @ApiOperation(value = "导出", tags = {"管理后台-结算汇总表"})
+ @GetMapping("/downloadSettlementTotal")
+ public R downloadSettlementTotal(String time,HttpServletResponse response)
+ {
+ SettlementTotalVO data = chargingOrderClient.settlementTotalR(time).getData();
+ try {
+ response.setCharacterEncoding(Constants.UTF8);
+ response.setContentType("application/vnd.ms-excel");
+ response.setHeader("Access-Control-Expose-Headers", "Content-disposition");
+ response.setHeader("Content-Disposition", "attachment;filename=" +
+ URLEncoder.encode("结算确认单", CharEncoding.UTF_8) + ".xlsx");
+ } catch (UnsupportedEncodingException e) {
+ return R.fail("excel导出失败!");
+ }
+ try {
+ // excel模板封装
+ ExcelWriterBuilder excelWriterBuilder = EasyExcelFactory.write(response.getOutputStream());
+ InputStream stream = Thread.currentThread().getContextClassLoader().getResourceAsStream("template/" +"运营商名称1-充电桩名称1-结算对账单明细-结算月份1" + ".xlsx");
+ // 自动释放资源
+ try (ExcelWriter excelWriter = excelWriterBuilder.withTemplate(stream).build()) {
+ WriteSheet writeSheet = EasyExcel.writerSheet().build();
+ FillConfig fillConfig = FillConfig.builder().direction(WriteDirectionEnum.VERTICAL).build();
+ excelWriter.fill(new FillWrapper("data1", data.getList1()), fillConfig, writeSheet);
+ excelWriter.fill(new FillWrapper("data2", data.getList2()), fillConfig, writeSheet);
+ excelWriter.finish();
+ } catch (Exception e) {
+ return R.fail("excel导出失败!");
+ }
+ } catch (IOException e) {
+ return R.fail("excel导出失败!");
+ }
+ return R.ok();
+ }
+ @ApiOperation(value = "下载", tags = {"管理后台-结算表记录"})
+ @GetMapping("/downloadSettlement")
+ public R downloadSettlement(String uid,HttpServletResponse response)
+ {
+ TSettlementConfirm data = chargingOrderClient.downloadSettlement(uid).getData();
+ List<Site> data1 = siteClient.getSiteByIds(Arrays.asList(data.getSiteId())).getData();
+ if (!data1.isEmpty()){
+ data.setSiteName(data1.get(0).getName());
+ }
+ Partner data2 = siteClient.getPartnerR(data.getPartnerId()).getData();
+ if (data2!=null){
+ data.setPartnerName(data2.getName());
+ }
+ List<TSettlementConfirm> chargingBillVOS = new ArrayList<>();
+ chargingBillVOS.add(data);
+ try {
+ response.setCharacterEncoding(Constants.UTF8);
+ response.setContentType("application/vnd.ms-excel");
+ response.setHeader("Access-Control-Expose-Headers", "Content-disposition");
+ response.setHeader("Content-Disposition", "attachment;filename=" +
+ URLEncoder.encode("结算确认单", CharEncoding.UTF_8) + ".xlsx");
+ } catch (UnsupportedEncodingException e) {
+ return R.fail("excel导出失败!");
+ }
+ try {
+ // excel模板封装
+ ExcelWriterBuilder excelWriterBuilder = EasyExcelFactory.write(response.getOutputStream());
+ InputStream stream = Thread.currentThread().getContextClassLoader().getResourceAsStream("template/" +"运营商名称1-充电桩名称1-结算对账单明细-结算月份1" + ".xlsx");
+ // 自动释放资源
+ try (ExcelWriter excelWriter = excelWriterBuilder.withTemplate(stream).build()) {
+ WriteSheet writeSheet = EasyExcel.writerSheet().build();
+ WriteSheet writeSheet2 = EasyExcel.writerSheet().build();
+ WriteSheet writeSheet3 = EasyExcel.writerSheet().build();
+ FillConfig fillConfig = FillConfig.builder().direction(WriteDirectionEnum.HORIZONTAL).build();
+ excelWriter.fill(new FillWrapper("data1", chargingBillVOS), fillConfig, writeSheet);
+ excelWriter.fill(new FillWrapper("data2", chargingBillVOS), fillConfig, writeSheet2);
+ excelWriter.fill(new FillWrapper("data3", data.getList()), fillConfig, writeSheet3);
+ excelWriter.finish();
+ } catch (Exception e) {
+ return R.fail("excel导出失败!");
+ }
+ } catch (IOException e) {
+ return R.fail("excel导出失败!");
+ }
+ return R.ok();
+ }
+
+
+
+
+
+
@ApiOperation(value = "下载-未出账", tags = {"管理后台-充电算账单"})
@GetMapping("/download")
public R download(String uid,HttpServletResponse response)
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingLotController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingLotController.java
index 22746d3..b00e89c 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingLotController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingLotController.java
@@ -1,6 +1,7 @@
package com.ruoyi.chargingPile.controller;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.chargingPile.api.dto.TParkingLotDTO;
import com.ruoyi.chargingPile.api.model.TCarport;
@@ -156,5 +157,18 @@
BigDecimal sum = parkingRecordService.getSum(sixBefore);
return R.ok();
}
+
+
+ /**
+ * 根据停车场标识查询停车场
+ * @param appKey
+ * @return
+ */
+ @PostMapping(value = "/getParkingLotByAppKey")
+ public R<TParkingLot> getParkingLotByAppKey(@RequestParam("appKey") String appKey){
+ TParkingLot parkingLot = parkingLotService.getOne(new LambdaQueryWrapper<TParkingLot>()
+ .eq(TParkingLot::getAppKey, appKey).eq(TParkingLot::getDelFlag, 0));
+ return R.ok(parkingLot);
+ }
}
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java
index dab0830..fec52ef 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java
@@ -1,18 +1,41 @@
package com.ruoyi.chargingPile.controller;
+import cn.afterturn.easypoi.excel.ExcelExportUtil;
+import cn.afterturn.easypoi.excel.entity.ExportParams;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.chargingPile.api.model.TParkingLot;
import com.ruoyi.chargingPile.api.model.TParkingRecord;
+import com.ruoyi.chargingPile.api.query.ParkingRecordQuery;
+import com.ruoyi.chargingPile.api.vo.GetParkingRecord;
+import com.ruoyi.chargingPile.api.vo.TParkingRecordPageInfoVO;
+import com.ruoyi.chargingPile.api.vo.TParkingRecordVO;
import com.ruoyi.chargingPile.dto.ParkingRecordPageQuery;
+import com.ruoyi.chargingPile.export.TParkingRecordExport;
import com.ruoyi.chargingPile.service.TParkingLotService;
import com.ruoyi.chargingPile.service.TParkingRecordService;
import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.utils.DateUtils;
+import com.ruoyi.common.core.utils.WebUtils;
import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.web.page.PageInfo;
+import com.ruoyi.common.log.annotation.Log;
+import com.ruoyi.common.log.enums.BusinessType;
+import com.ruoyi.order.api.query.TOrderInvoiceQuery;
+import com.ruoyi.order.api.vo.TOrderInvoiceVO;
import io.swagger.annotations.ApiOperation;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.springframework.beans.BeanUtils;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.List;
/**
* <p>
@@ -47,12 +70,59 @@
return R.ok(page);
}
+ @ApiOperation(tags = {"后台-订单管理-停车记录"},value = "停车缴费订单列表")
+ @PostMapping(value = "/pageList")
+ public R<TParkingRecordPageInfoVO> pageList(@RequestBody ParkingRecordQuery query) {
+ return R.ok(parkingRecordService.pageList(query));
+ }
+ @ApiOperation(tags = {"后台-订单管理-停车记录"},value = "导出")
+ @PutMapping("/export")
+ public void export(@RequestBody ParkingRecordQuery query)
+ {
+ List<TParkingRecordVO> records = parkingRecordService.pageList(query).getParkingRecordVOS().getRecords();
+ List<TParkingRecordExport> orderInvoiceExports = new ArrayList<>();
+ for (TParkingRecordVO orderInvoiceVO : records) {
+ TParkingRecordExport orderInvoiceExport = new TParkingRecordExport();
+ BeanUtils.copyProperties(orderInvoiceVO,orderInvoiceExport);
+ if (orderInvoiceVO.getFreeDuration()!=null){
+ orderInvoiceExport.setParkingDuration(orderInvoiceVO.getParkingDuration()-orderInvoiceVO.getFreeDuration());
+ }else{
+ orderInvoiceExport.setParkingDuration(orderInvoiceVO.getParkingDuration());
+ }
+ if (orderInvoiceVO.getTimeoutAmount()!=null){
+ orderInvoiceExport.setAmount(orderInvoiceVO.getOrderAmount().subtract(orderInvoiceVO.getTimeoutAmount()));
+ }else{
+ orderInvoiceExport.setAmount(orderInvoiceVO.getOrderAmount());
+ }
+ orderInvoiceExports.add(orderInvoiceExport);
+ }
+ Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), TParkingRecordExport.class, orderInvoiceExports);
+ HttpServletResponse response = WebUtils.response();
+ response.setContentType("application/vnd.ms-excel");
+ response.setCharacterEncoding("utf-8");
+ ServletOutputStream outputStream = null;
+ try {
+ String fileName = URLEncoder.encode("停车记录.xls", "utf-8");
+ response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
+ response.setContentType("application/vnd.ms-excel;charset=UTF-8");
+ response.setHeader("Pragma", "no-cache");
+ response.setHeader("Cache-Control", "no-cache");
+ outputStream = response.getOutputStream();
+ workbook.write(outputStream);
+ } catch (IOException e) {
+ e.printStackTrace();
+ } finally {
+ try {
+ outputStream.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
@ApiOperation(tags = {"后台-订单管理-停车记录"},value = "详情")
@GetMapping(value = "/detail")
public R<TParkingRecord> detail(Long id) {
-
return R.ok(parkingRecordService.getById(id));
-
}
@ApiOperation(tags = {"后台-订单管理-停车记录"},value = "出场")
@@ -64,8 +134,50 @@
return R.ok();
}
-
-
-
+
+
+ /**
+ * 根据车牌和状态查询停车数据
+ * @param query
+ * @return
+ */
+ @PostMapping("/getParkingRecord")
+ public R<TParkingRecord> getParkingRecord(@RequestBody GetParkingRecord query){
+ TParkingRecord one = parkingRecordService.getOne(new LambdaQueryWrapper<TParkingRecord>()
+ .eq(TParkingRecord::getLicensePlate, query.getLicensePlate()).eq(TParkingRecord::getStatus, query.getStatus()));
+ return R.ok(one);
+ }
+
+
+ /**
+ * 修改停车数据
+ * @param parkingRecord
+ */
+ @PostMapping("/updateParkingRecord")
+ public void updateParkingRecord(@RequestBody TParkingRecord parkingRecord){
+ parkingRecordService.updateById(parkingRecord);
+ }
+
+
+ /**
+ * 根据id获取数据
+ * @param id
+ * @return
+ */
+ @PostMapping("/getParkingRecordById")
+ public R<TParkingRecord> getParkingRecordById(@RequestParam("id") Long id){
+ TParkingRecord parkingRecord = parkingRecordService.getById(id);
+ return R.ok(parkingRecord);
+ }
+
+
+ /**
+ * 添加数据
+ * @param parkingRecord
+ */
+ @PostMapping("/addParkingRecord")
+ public void addParkingRecord(@RequestBody TParkingRecord parkingRecord){
+ parkingRecordService.save(parkingRecord);
+ }
}
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TRepairController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TRepairController.java
index 981cc4b..6820fa6 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TRepairController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TRepairController.java
@@ -35,7 +35,8 @@
public AjaxResult<PageInfo<TRepair>> getRepairList(String name, String siteId, BasePage basePage){
PageInfo<TRepair> pageInfo = new PageInfo<>(basePage.getPageCurr(), basePage.getPageSize());
List<TRepair> repairList = repairService.getRepairList(pageInfo, name, siteId);
- return AjaxResult.success(repairList);
+ pageInfo.setRecords(repairList);
+ return AjaxResult.success(pageInfo);
}
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/export/TParkingRecordExport.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/export/TParkingRecordExport.java
new file mode 100644
index 0000000..a34bb11
--- /dev/null
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/export/TParkingRecordExport.java
@@ -0,0 +1,41 @@
+package com.ruoyi.chargingPile.export;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+@Data
+@ApiModel(value = "导出充电算帐单-导出")
+public class TParkingRecordExport implements Serializable {
+
+ @Excel(name = "账单编号",width = 30)
+ private String code;
+ @Excel(name = "站点名称",width = 30)
+ private String siteName;
+ @Excel(name = "出场时间",width = 30)
+ private String outParkingTime;
+ @Excel(name = "进场时间",width = 30)
+ private String inParkingTime;
+ @Excel(name = "车牌号",width = 30)
+ private String licensePlate;
+ @Excel(name = "车辆颜色",width = 30)
+ private String vehicleColor;
+ @Excel(name = "总费用",width = 30)
+ private BigDecimal orderAmount;
+ @Excel(name = "超时占位费",width = 30)
+ private BigDecimal timeoutAmount;
+ @Excel(name = "停车费",width = 30)
+ private BigDecimal amount;
+ @Excel(name = "免费时长(分钟)",width = 30)
+ private Integer freeDuration;
+ @Excel(name = "停车总时长(分钟)",width = 30)
+ private Integer parkingDuration;
+ @Excel(name = "收费时长(分钟)",width = 30)
+ private Integer payDuration;
+
+}
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/SiteMapper.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/SiteMapper.java
index 0b4fa13..9a7ab8d 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/SiteMapper.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/SiteMapper.java
@@ -8,6 +8,7 @@
import com.ruoyi.chargingPile.api.vo.SiteDetailVO;
import com.ruoyi.chargingPile.api.vo.SiteVO;
import com.ruoyi.common.core.web.page.PageInfo;
+import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -17,6 +18,7 @@
* @author zhibing.pu
* @Date 2024/8/7 19:49
*/
+@Mapper
public interface SiteMapper extends BaseMapper<Site> {
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TParkingRecordMapper.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TParkingRecordMapper.java
index 248c63f..d0b6ced 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TParkingRecordMapper.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TParkingRecordMapper.java
@@ -2,10 +2,15 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.chargingPile.api.model.TParkingRecord;
+import com.ruoyi.chargingPile.api.query.ParkingRecordQuery;
+import com.ruoyi.chargingPile.api.vo.TParkingRecordPageInfoVO;
+import com.ruoyi.chargingPile.api.vo.TParkingRecordVO;
+import com.ruoyi.common.core.web.page.PageInfo;
import org.apache.ibatis.annotations.Param;
import java.math.BigDecimal;
import java.time.LocalDate;
+import java.util.List;
/**
* <p>
@@ -18,4 +23,20 @@
public interface TParkingRecordMapper extends BaseMapper<TParkingRecord> {
BigDecimal getSum(@Param("sixBefore") LocalDate sixBefore);
+
+ /**
+ * 停车缴费订单列表
+ * @param query
+ * @param pageInfo
+ * @return
+ */
+ List<TParkingRecordVO> pageList(@Param("query") ParkingRecordQuery query, @Param("pageInfo")PageInfo<TParkingRecordVO> pageInfo);
+
+ /**
+ * 统计
+ * @param query
+ * @return
+ */
+ TParkingRecordPageInfoVO getParkingRecordCount(@Param("query")ParkingRecordQuery query);
+
}
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TRepairMapper.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TRepairMapper.java
index afe8e9f..c9190aa 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TRepairMapper.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TRepairMapper.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.chargingPile.api.model.TRepair;
import com.ruoyi.common.core.web.page.PageInfo;
+import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -24,6 +25,6 @@
* @param siteId
* @return
*/
- List<TRepair> getRepairList(PageInfo<TRepair> pageInfo, String name, String siteId);
+ List<TRepair> getRepairList(PageInfo<TRepair> pageInfo, @Param("name") String name, @Param("siteId") String siteId);
}
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/TParkingRecordService.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/TParkingRecordService.java
index 2af1069..9479008 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/TParkingRecordService.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/TParkingRecordService.java
@@ -2,6 +2,9 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.chargingPile.api.model.TParkingRecord;
+import com.ruoyi.chargingPile.api.query.ParkingRecordQuery;
+import com.ruoyi.chargingPile.api.vo.TParkingRecordPageInfoVO;
+import com.ruoyi.common.core.web.page.PageInfo;
import java.math.BigDecimal;
import java.time.LocalDate;
@@ -17,4 +20,11 @@
public interface TParkingRecordService extends IService<TParkingRecord> {
BigDecimal getSum(LocalDate sixBefore);
+
+ /**
+ * 停车缴费订单列表
+ * @param query
+ * @return
+ */
+ TParkingRecordPageInfoVO pageList(ParkingRecordQuery query);
}
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java
index 7cf4f33..97458c6 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java
@@ -378,7 +378,7 @@
this.updateById(site);
List<TChargingGun> list = chargingGunService.list(new LambdaQueryWrapper<TChargingGun>().in(TChargingGun::getChargingPileId, id).eq(TChargingGun::getDelFlag, 0));
for (TChargingGun tChargingGun : list) {
- tChargingGun.setChargingPileId(accountingStrategyId);
+ tChargingGun.setAccountingStrategyId(accountingStrategyId);
}
chargingGunService.updateBatchById(list);
}
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java
index d497796..00e72b4 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java
@@ -242,7 +242,7 @@
List<Integer> id = setAccountingStrategy.getId();
List<TChargingGun> list = chargingGunService.list(new LambdaQueryWrapper<TChargingGun>().in(TChargingGun::getChargingPileId, id).eq(TChargingGun::getDelFlag, 0));
for (TChargingGun tChargingGun : list) {
- tChargingGun.setChargingPileId(setAccountingStrategy.getAccountingStrategyId());
+ tChargingGun.setAccountingStrategyId(setAccountingStrategy.getAccountingStrategyId());
}
chargingGunService.updateBatchById(list);
}
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TParkingRecordServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TParkingRecordServiceImpl.java
index 73fccbb..8e6f6e9 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TParkingRecordServiceImpl.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TParkingRecordServiceImpl.java
@@ -1,13 +1,28 @@
package com.ruoyi.chargingPile.service.impl;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.chargingPile.api.model.Site;
+import com.ruoyi.chargingPile.api.model.TParkingLot;
import com.ruoyi.chargingPile.api.model.TParkingRecord;
+import com.ruoyi.chargingPile.api.query.ParkingRecordQuery;
+import com.ruoyi.chargingPile.api.vo.TParkingLotVO;
+import com.ruoyi.chargingPile.api.vo.TParkingRecordPageInfoVO;
+import com.ruoyi.chargingPile.api.vo.TParkingRecordVO;
+import com.ruoyi.chargingPile.domain.SiteMenu;
+import com.ruoyi.chargingPile.mapper.SiteMapper;
+import com.ruoyi.chargingPile.mapper.TParkingLotMapper;
import com.ruoyi.chargingPile.mapper.TParkingRecordMapper;
import com.ruoyi.chargingPile.service.TParkingRecordService;
+import com.ruoyi.common.core.web.page.PageInfo;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.time.LocalDate;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
/**
* <p>
@@ -20,8 +35,32 @@
@Service
public class TParkingRecordServiceImpl extends ServiceImpl<TParkingRecordMapper, TParkingRecord> implements TParkingRecordService {
+ @Autowired
+ private SiteMapper siteMapper;
+ @Autowired
+ private TParkingLotMapper parkingLotMapper;
+
@Override
public BigDecimal getSum(LocalDate sixBefore) {
return this.baseMapper.getSum(sixBefore);
}
+
+ @Override
+ public TParkingRecordPageInfoVO pageList(ParkingRecordQuery query) {
+ // 查询站点的停车场id
+ if(Objects.nonNull(query.getSiteId())){
+ Site site = siteMapper.selectById(query.getSiteId());
+ List<TParkingLot> tParkingLots = parkingLotMapper.selectList(Wrappers.lambdaQuery(TParkingLot.class)
+ .eq(TParkingLot::getSiteId, site.getId()));
+ List<Integer> lotIds = tParkingLots.stream().map(TParkingLot::getId).collect(Collectors.toList());
+ query.setLotIds(lotIds);
+ }
+ PageInfo<TParkingRecordVO> pageInfo = new PageInfo<>(query.getPageCurr(),query.getPageSize());
+ List<TParkingRecordVO> list = this.baseMapper.pageList(query,pageInfo);
+ pageInfo.setRecords(list);
+ // 查询总数
+ TParkingRecordPageInfoVO infoVO = this.baseMapper.getParkingRecordCount(query);
+ infoVO.setParkingRecordVOS(pageInfo);
+ return infoVO;
+ }
}
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TParkingLotMapper.xml b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TParkingLotMapper.xml
index ce9ef7e..d20746a 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TParkingLotMapper.xml
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TParkingLotMapper.xml
@@ -25,8 +25,7 @@
</sql>
<select id="pageList" resultType="com.ruoyi.chargingPile.api.vo.TParkingLotVO">
SELECT
- tpl.id, tpl.`name`, tpl.code, tpl.site_id, tpl.charge_free_duration, tpl.charge_capping, tpl.charge_rate, tpl.non_charge_free_duration,
- tpl.non_charge_capping, tpl.non_charge_rate, tpl.remark, tpl.create_time, tpl.del_flag, ts.name AS siteName
+ tpl.*, ts.name AS siteName
FROM t_parking_lot tpl
LEFT JOIN t_site ts ON tpl.site_id = ts.id
<where>
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TParkingRecordMapper.xml b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TParkingRecordMapper.xml
index defbedf..3bc729d 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TParkingRecordMapper.xml
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TParkingRecordMapper.xml
@@ -17,6 +17,7 @@
<result column="status" property="status" />
<result column="out_parking_type" property="outParkingType" />
<result column="create_time" property="createTime" />
+ <result column="code" property="code" />
</resultMap>
<!-- 通用查询结果列 -->
@@ -26,5 +27,59 @@
<select id="getSum" resultType="java.math.BigDecimal">
select sum(timeout_amount) from t_parking_record where in_parking_time >= #{sixBefore}
</select>
+ <select id="pageList" resultType="com.ruoyi.chargingPile.api.vo.TParkingRecordVO">
+ select
+ tpr.id, tpr.app_user_id, tpr.license_plate, tpr.vehicle_color, tpr.charging_order_id, tpr.parking_lot_id, tpr.in_parking_time, tpr.out_parking_time,
+ tpr.parking_duration, tpr.order_amount, tpr.status, tpr.out_parking_type, tpr.create_time,(tpr.order_amount - tpr.timeout_amount) as parkingFee,
+ (tpr.parking_duration - tpr.free_duration) as feeDuration,ts.name as siteName
+ from t_parking_record tpr
+ left join t_parking_lot tpl on tpr.parking_lot_id = tpl.id
+ left join t_site ts on tpl.site_id = ts.id
+ <where>
+ <if test="query.startTime != null and query.startTime != '' and query.endTime != null and query.endTime != ''">
+ AND tpr.create_time BETWEEN #{query.startTime} AND #{query.endTime}
+ </if>
+ <if test="query.code != null and query.code != ''">
+ AND tpr.code LIKE concat('%',#{query.code},'%')
+ </if>
+ <if test="query.licensePlate != null and query.licensePlate != ''">
+ AND tpr.licensePlate LIKE concat('%',#{query.licensePlate},'%')
+ </if>
+ <if test="query.lotIds != null and query.lotIds.size()>0">
+ AND tpr.parking_lot_id IN
+ <foreach collection="query.lotIds" item="item" open="(" separator="," close=")">
+ #{item}
+ </foreach>
+ </if>
+ AND tpr.status = 3
+ </where>
+ ORDER BY tpr.create_time DESC
+ </select>
+ <select id="getParkingRecordCount" resultType="com.ruoyi.chargingPile.api.vo.TParkingRecordPageInfoVO">
+ SELECT count(id) as orderCount,
+ sum(timeout_amount) as timeoutAmountSum,
+ sum(parking_duration - free_duration) as feeDurationSum,
+ sum(parking_duration) as parkingDurationSum
+ from t_parking_record
+ <where>
+ <if test="query.startTime != null and query.startTime != '' and query.endTime != null and query.endTime != ''">
+ AND create_time BETWEEN #{query.startTime} AND #{query.endTime}
+ </if>
+ <if test="query.code != null and query.code != ''">
+ AND code LIKE concat('%',#{query.code},'%')
+ </if>
+ <if test="query.licensePlate != null and query.licensePlate != ''">
+ AND licensePlate LIKE concat('%',#{query.licensePlate},'%')
+ </if>
+ <if test="query.lotIds != null and query.lotIds.size()>0">
+ AND parking_lot_id IN
+ <foreach collection="query.lotIds" item="item" open="(" separator="," close=")">
+ #{item}
+ </foreach>
+ </if>
+ AND status = 3
+ </where>
+ ORDER BY create_time DESC
+ </select>
</mapper>
diff --git "a/ruoyi-service/ruoyi-chargingPile/src/main/resources/template/\350\264\246\346\210\267\347\273\223\347\256\227\350\264\246\345\215\225.xlsx" "b/ruoyi-service/ruoyi-chargingPile/src/main/resources/template/\350\264\246\346\210\267\347\273\223\347\256\227\350\264\246\345\215\225.xlsx"
new file mode 100644
index 0000000..296d45b
--- /dev/null
+++ "b/ruoyi-service/ruoyi-chargingPile/src/main/resources/template/\350\264\246\346\210\267\347\273\223\347\256\227\350\264\246\345\215\225.xlsx"
Binary files differ
diff --git "a/ruoyi-service/ruoyi-chargingPile/src/main/resources/template/\350\277\220\350\220\245\345\225\206\345\220\215\347\247\2601-\345\205\205\347\224\265\346\241\251\345\220\215\347\247\2601-\347\273\223\347\256\227\345\257\271\350\264\246\345\215\225\346\230\216\347\273\206-\347\273\223\347\256\227\346\234\210\344\273\2751.xlsx" "b/ruoyi-service/ruoyi-chargingPile/src/main/resources/template/\350\277\220\350\220\245\345\225\206\345\220\215\347\247\2601-\345\205\205\347\224\265\346\241\251\345\220\215\347\247\2601-\347\273\223\347\256\227\345\257\271\350\264\246\345\215\225\346\230\216\347\273\206-\347\273\223\347\256\227\346\234\210\344\273\2751.xlsx"
new file mode 100644
index 0000000..807ae43
--- /dev/null
+++ "b/ruoyi-service/ruoyi-chargingPile/src/main/resources/template/\350\277\220\350\220\245\345\225\206\345\220\215\347\247\2601-\345\205\205\347\224\265\346\241\251\345\220\215\347\247\2601-\347\273\223\347\256\227\345\257\271\350\264\246\345\215\225\346\230\216\347\273\206-\347\273\223\347\256\227\346\234\210\344\273\2751.xlsx"
Binary files differ
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/controller/CouponController.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/controller/CouponController.java
new file mode 100644
index 0000000..f98d54e
--- /dev/null
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/controller/CouponController.java
@@ -0,0 +1,50 @@
+package com.ruoyi.integration.barrierGate.controller;
+
+import com.ruoyi.integration.barrierGate.model.BaseResponse;
+import com.ruoyi.integration.barrierGate.model.GetCouponReq;
+import com.ruoyi.integration.barrierGate.model.GetCouponResp;
+import com.ruoyi.integration.barrierGate.model.UsedCoupon;
+import com.ruoyi.integration.barrierGate.server.CouponService;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+/**
+ * 优惠券控制器
+ * @author zhibing.pu
+ * @Date 2024/9/5 11:10
+ */
+@RestController
+@RequestMapping("/coupon")
+public class CouponController {
+
+ @Resource
+ private CouponService couponService;
+
+
+ /**
+ * 获取优惠券
+ * 减免停车费的优惠
+ * @param req
+ * @return
+ */
+ @ResponseBody
+ @PostMapping("/getCoupon")
+ public BaseResponse<GetCouponResp> getCoupon(@RequestBody GetCouponReq req){
+ GetCouponResp coupon = couponService.getCoupon(req);
+ return BaseResponse.ok(coupon);
+ }
+
+
+ /**
+ * 使用优惠券
+ * @param req
+ * @return
+ */
+ @ResponseBody
+ @PostMapping("/usedCoupon")
+ public BaseResponse usedCoupon(@RequestBody UsedCoupon req){
+ couponService.usedCoupon(req);
+ return BaseResponse.ok();
+ }
+}
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/controller/ParkingOrderController.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/controller/ParkingOrderController.java
new file mode 100644
index 0000000..e37685a
--- /dev/null
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/controller/ParkingOrderController.java
@@ -0,0 +1,101 @@
+package com.ruoyi.integration.barrierGate.controller;
+
+import com.ruoyi.integration.barrierGate.model.*;
+import com.ruoyi.integration.barrierGate.server.ParkingOrderService;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/9/5 16:14
+ */
+@RestController
+@RequestMapping("/parkingOrder")
+public class ParkingOrderController {
+
+ @Resource
+ private ParkingOrderService parkingOrderService;
+
+
+ /**
+ * 云停车入场
+ * @param order
+ */
+ @ResponseBody
+ @PostMapping("/cloudParkingInOrder")
+ public BaseResponse cloudParkingInOrder(@RequestBody CloudParkingOrder order){
+ parkingOrderService.cloudParkingInOrder(order);
+ return BaseResponse.ok();
+ }
+
+
+ /**
+ * 云停车出场
+ * @param order
+ */
+ @ResponseBody
+ @PostMapping("/cloudParkingOutOrder")
+ public BaseResponse cloudParkingOutOrder(@RequestBody CloudParkingOrder order){
+ parkingOrderService.cloudParkingOutOrder(order);
+ return BaseResponse.ok();
+ }
+
+
+ /**
+ * 云停车实时车位
+ * @param parkingSpace
+ */
+ @ResponseBody
+ @PostMapping("/cloudParkingSpace")
+ public BaseResponse cloudParkingSpace(@RequestBody CloudParkingSpace parkingSpace){
+ parkingOrderService.cloudParkingSpace(parkingSpace);
+ return BaseResponse.ok();
+ }
+
+
+
+ /**
+ * 线下停车场入场
+ * @param order
+ */
+ @ResponseBody
+ @PostMapping("/offlineParkingInOrder")
+ public BaseResponse offlineParkingInOrder(@RequestBody OfflineParkingOrder order){
+ parkingOrderService.offlineParkingInOrder(order);
+ OfflineParkingResponse offlineParkingResponse = new OfflineParkingResponse();
+ offlineParkingResponse.setCode(0);
+ offlineParkingResponse.setTakeover(0);
+ offlineParkingResponse.setIsfree(false);
+ return offlineParkingResponse;
+ }
+
+
+ /**
+ * 线下停车场出场
+ * @param order
+ */
+ @ResponseBody
+ @PostMapping("/offlineParkingOutOrder")
+ public BaseResponse offlineParkingOutOrder(@RequestBody OfflineParkingOrder order){
+ parkingOrderService.offlineParkingOutOrder(order);
+ OfflineParkingResponse offlineParkingResponse = new OfflineParkingResponse();
+ offlineParkingResponse.setCode(0);
+ offlineParkingResponse.setTakeover(0);
+ offlineParkingResponse.setIsfree(false);
+ return offlineParkingResponse;
+ }
+
+
+ /**
+ * 线下停车场实时车位
+ * @param parkingSpace
+ */
+ @ResponseBody
+ @PostMapping("/offlineParkingSpace")
+ public BaseResponse offlineParkingSpace(@RequestBody OfflineParkingSpace parkingSpace){
+ parkingOrderService.offlineParkingSpace(parkingSpace);
+ return BaseResponse.ok();
+ }
+
+}
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/model/BaseResponse.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/model/BaseResponse.java
new file mode 100644
index 0000000..8f63c73
--- /dev/null
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/model/BaseResponse.java
@@ -0,0 +1,31 @@
+package com.ruoyi.integration.barrierGate.model;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/9/5 11:29
+ */
+@Data
+public class BaseResponse<T> {
+
+ private Integer code;
+
+ private String msg;
+
+ private T data;
+
+
+ public static BaseResponse ok(){
+ return ok(new Object());
+ }
+
+
+ public static <T> BaseResponse<T> ok(T data){
+ BaseResponse baseResponse = new BaseResponse();
+ baseResponse.setCode(0);
+ baseResponse.setData(data);
+ baseResponse.setMsg("成功");
+ return baseResponse;
+ }
+}
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/model/CloudParkingOrder.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/model/CloudParkingOrder.java
new file mode 100644
index 0000000..af10c3d
--- /dev/null
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/model/CloudParkingOrder.java
@@ -0,0 +1,84 @@
+package com.ruoyi.integration.barrierGate.model;
+
+import lombok.Data;
+
+/**
+ * 云停车订单实体
+ * @author zhibing.pu
+ * @Date 2024/9/5 15:54
+ */
+@Data
+public class CloudParkingOrder {
+ /**
+ * 停车场appKey
+ */
+ private String appkey;
+ /**
+ * 车场业务ID
+ */
+ private String id;
+ /**
+ * 入场通道号
+ */
+ private String enterChannel;
+ /**
+ * 入场时间
+ */
+ private String enterDateTime;
+ /**
+ * 车牌号
+ */
+ private String plate;
+ /**
+ * 入场通道名称
+ */
+ private String enterChannelName;
+ /**
+ * 车牌颜色
+ */
+ private String plateColor;
+ /**
+ * 卡种类
+ */
+ private String kind;
+ /**
+ * 姓名
+ */
+ private String name;
+ /**
+ * 应收金额
+ */
+ private String receivable;
+ /**
+ * 实收金额
+ */
+ private String payment;
+ /**
+ * 支付方式
+ */
+ private String payType;
+ /**
+ * 离场通道号
+ */
+ private String leaveChannel;
+ /**
+ * 离场时间
+ */
+ private String leaveDateTime;
+ /**
+ * 离场通道名称
+ */
+ private String leaveChannelName;
+ /**
+ * 停车时长
+ */
+ private String longTime;
+ /**
+ * 时间戳
+ */
+ private String timestamp;
+ /**
+ * 签名
+ */
+ private String sign;
+}
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/model/CloudParkingSpace.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/model/CloudParkingSpace.java
new file mode 100644
index 0000000..743db0c
--- /dev/null
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/model/CloudParkingSpace.java
@@ -0,0 +1,35 @@
+package com.ruoyi.integration.barrierGate.model;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/9/5 16:22
+ */
+@Data
+public class CloudParkingSpace {
+ /**
+ * 停车场appkey
+ */
+ private String appkey;
+ /**
+ * 总车位数
+ */
+ private String total;
+ /**
+ * 已用车位
+ */
+ private String used;
+ /**
+ * 空余车位
+ */
+ private String free;
+ /**
+ * 时间戳
+ */
+ private String timestamp;
+ /**
+ * 签名
+ */
+ private String sign;
+}
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/model/GetCouponReq.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/model/GetCouponReq.java
new file mode 100644
index 0000000..964c335
--- /dev/null
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/model/GetCouponReq.java
@@ -0,0 +1,31 @@
+package com.ruoyi.integration.barrierGate.model;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/9/5 11:12
+ */
+@Data
+public class GetCouponReq {
+ /**
+ * 停车场appkey
+ */
+ private String appKey;
+ /**
+ * 车牌号
+ */
+ private String carNumber;
+ /**
+ * 时间戳
+ */
+ private String timestamp;
+ /**
+ * 停车费用
+ */
+ private String fee;
+ /**
+ * 签名
+ */
+ private String sign;
+}
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/model/GetCouponResp.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/model/GetCouponResp.java
new file mode 100644
index 0000000..58bbb7b
--- /dev/null
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/model/GetCouponResp.java
@@ -0,0 +1,43 @@
+package com.ruoyi.integration.barrierGate.model;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/9/5 11:19
+ */
+@Data
+public class GetCouponResp {
+ /**
+ * 优惠券记录id
+ */
+ private Long recordId;
+ /**
+ * 车牌号
+ */
+ private String carNumber;
+ /**
+ * 平台编号
+ */
+ private String sysOrgId;
+ /**
+ * 商户名称
+ */
+ private String posName;
+ /**
+ * 优惠券名称
+ */
+ private String couponName;
+ /**
+ * 发放人
+ */
+ private String lssuer;
+ /**
+ * 类型:1单次全免、2金额优惠、3单笔折扣、4优惠时长、5日期范围全免
+ */
+ private Integer type;
+ /**
+ * 优惠明细
+ */
+ private Parameter parameter;
+}
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/model/OfflineParkingOrder.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/model/OfflineParkingOrder.java
new file mode 100644
index 0000000..41e1691
--- /dev/null
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/model/OfflineParkingOrder.java
@@ -0,0 +1,91 @@
+package com.ruoyi.integration.barrierGate.model;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+/**
+ * 云停车订单实体
+ * @author zhibing.pu
+ * @Date 2024/9/5 15:54
+ */
+@Data
+public class OfflineParkingOrder {
+ /**
+ * 停车场appKey
+ */
+ private String appkey;
+ /**
+ * 10 位时间戳
+ */
+ private String timestamp;
+ /**
+ * 签名
+ */
+ private String sign;
+ /**
+ * 进出记录 ID
+ */
+ private String id;
+ /**
+ * 卡号
+ */
+ private String cardid;
+ /**
+ * 会员 ID
+ */
+ private String memberid;
+ /**
+ * 会员类型
+ */
+ private String membertype;
+ /**
+ * 会员姓名
+ */
+ private String name;
+ /**
+ * 车牌号
+ */
+ private String platenumber;
+ /**
+ * 车牌颜色
+ */
+ private String platecolor;
+ /**
+ * 入场通道
+ */
+ private String enterchannel;
+ /**
+ * 入场时间
+ */
+ private String entertime;
+ /**
+ * 是否库中库 0、不是库中库,1、是库中库
+ */
+ private Integer subplace;
+ /**
+ * 抓拍图片(base64)
+ */
+ private String image;
+ /**
+ * 备注
+ */
+ private String remark;
+ /**
+ * 停车时长(分钟)
+ */
+ @JsonProperty("long")
+ private String longTime;
+ /**
+ * 停车费用
+ */
+ private String money;
+ /**
+ * 出场通道
+ */
+ private String leavechannel;
+ /**
+ * 出场时间
+ */
+ private String leavetime;
+}
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/model/OfflineParkingResponse.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/model/OfflineParkingResponse.java
new file mode 100644
index 0000000..9b016e6
--- /dev/null
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/model/OfflineParkingResponse.java
@@ -0,0 +1,36 @@
+package com.ruoyi.integration.barrierGate.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/9/6 15:10
+ */
+@Data
+public class OfflineParkingResponse extends BaseResponse{
+ /**
+ * 0、正常流程(opendoor、led、sound 无效),1、流程接
+ * 管(opendoor、led、sound 生效)软件不再进行后续流
+ * 程
+ */
+ private Integer takeover;
+ /**
+ * 1、开闸,0、不开闸
+ */
+ private Integer opendoor;
+ /**
+ * 对于显示到 LED 上的每一行信息
+ */
+ private List<String> led;
+ /**
+ * 语音播报内容
+ */
+ private String sound;
+ /**
+ * 是否免费(不接管的情况下)
+ */
+ private Boolean isfree;
+
+}
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/model/OfflineParkingSpace.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/model/OfflineParkingSpace.java
new file mode 100644
index 0000000..b5a720d
--- /dev/null
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/model/OfflineParkingSpace.java
@@ -0,0 +1,39 @@
+package com.ruoyi.integration.barrierGate.model;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/9/5 16:22
+ */
+@Data
+public class OfflineParkingSpace {
+ /**
+ * 停车场appkey
+ */
+ private String appkey;
+ /**
+ * 10 位时间戳
+ */
+ private String timestamp;
+ /**
+ * 签名
+ */
+ private String sign;
+ /**
+ * 总车位数
+ */
+ private Integer place;
+ /**
+ * 剩余车位数
+ */
+ private Integer surplus;
+ /**
+ * 固定车数量
+ */
+ private Integer fixed;
+ /**
+ * 临时车数量
+ */
+ private Integer interim;
+}
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/model/Parameter.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/model/Parameter.java
new file mode 100644
index 0000000..79e7f63
--- /dev/null
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/model/Parameter.java
@@ -0,0 +1,47 @@
+package com.ruoyi.integration.barrierGate.model;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/9/5 11:24
+ */
+@Data
+public class Parameter {
+ /**
+ * 使用门槛
+ */
+ private Boolean isHaveUseRequirement;
+ /**
+ * 金额优惠满减阈值
+ */
+ private Double minAmount;
+ /**
+ * 时长优惠满减阈值
+ */
+ private Double minRequirement;
+ /**
+ * 全免标记
+ */
+ private Boolean freeFlag;
+ /**
+ * 优惠折扣
+ */
+ private Double discount;
+ /**
+ * 优惠金额
+ */
+ private Double money;
+ /**
+ * 优惠时长
+ */
+ private Integer time;
+ /**
+ * 开始日期 yyyy-mm-dd HH:mm:ss #日期范围开始
+ */
+ private String startTime;
+ /**
+ * 结束日期 yyyy-mm-dd HH:mm:ss #日期范围开始
+ */
+ private String endTime;
+}
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/model/UsedCoupon.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/model/UsedCoupon.java
new file mode 100644
index 0000000..58584d8
--- /dev/null
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/model/UsedCoupon.java
@@ -0,0 +1,47 @@
+package com.ruoyi.integration.barrierGate.model;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/9/5 15:39
+ */
+@Data
+public class UsedCoupon {
+ /**
+ * 停车场appkey
+ */
+ private String appKey;
+ /**
+ * 车牌号
+ */
+ private String carNumber;
+ /**
+ * 车场流水号
+ */
+ private String serialnumber;
+ /**
+ * 时间戳
+ */
+ private String timestamp;
+ /**
+ * 未优惠停车费用
+ */
+ private String fee;
+ /**
+ * 优惠金额
+ */
+ private String actualFee;
+ /**
+ * 优惠券id
+ */
+ private String recordId;
+ /**
+ * 平台编号
+ */
+ private String sysOrgId;
+ /**
+ * 签名
+ */
+ private String sign;
+}
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/CouponService.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/CouponService.java
new file mode 100644
index 0000000..0f3445f
--- /dev/null
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/CouponService.java
@@ -0,0 +1,120 @@
+package com.ruoyi.integration.barrierGate.server;
+
+import com.ruoyi.chargingPile.api.feignClient.ParkingLotClient;
+import com.ruoyi.chargingPile.api.feignClient.ParkingRecordClient;
+import com.ruoyi.chargingPile.api.model.TParkingLot;
+import com.ruoyi.chargingPile.api.model.TParkingRecord;
+import com.ruoyi.chargingPile.api.vo.GetParkingRecord;
+import com.ruoyi.integration.barrierGate.model.GetCouponReq;
+import com.ruoyi.integration.barrierGate.model.GetCouponResp;
+import com.ruoyi.integration.barrierGate.model.Parameter;
+import com.ruoyi.integration.barrierGate.model.UsedCoupon;
+import com.ruoyi.order.api.feignClient.ChargingOrderClient;
+import com.ruoyi.order.api.model.TChargingOrder;
+import com.ruoyi.order.api.vo.GetChargingOrderByLicensePlate;
+import org.springframework.stereotype.Service;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/9/5 11:11
+ */
+@Service
+public class CouponService {
+
+ @Resource
+ private ParkingLotClient parkingLotClient;
+
+ @Resource
+ private ParkingRecordClient parkingRecordClient;
+
+ @Resource
+ private ChargingOrderClient chargingOrderClient;
+
+
+
+
+
+ /**
+ * 获取优惠券
+ * @param req
+ * @return
+ */
+ public GetCouponResp getCoupon(GetCouponReq req){
+ //根据车牌查询入场时间,后再根据入场时间和车牌查询是否有充电订单
+ String carNumber = req.getCarNumber();
+ String appKey = req.getAppKey();
+ TParkingLot parkingLot = parkingLotClient.getParkingLotByAppKey(appKey).getData();
+ if(null == parkingLot){
+ return null;
+ }
+ GetParkingRecord query = new GetParkingRecord();
+ query.setStatus(1);
+ query.setLicensePlate(carNumber);
+ TParkingRecord data = parkingRecordClient.getParkingRecord(query).getData();
+ if(null == data){
+ return null;
+ }
+ //入场时间
+ LocalDateTime inParkingTime = data.getInParkingTime();
+ //开始查询充电订单
+ GetChargingOrderByLicensePlate getChargingOrderByLicensePlate = new GetChargingOrderByLicensePlate();
+ getChargingOrderByLicensePlate.setLicensePlate(carNumber);
+ getChargingOrderByLicensePlate.setStartTime(inParkingTime);
+ TChargingOrder tChargingOrder = chargingOrderClient.getChargingOrderByLicensePlate(getChargingOrderByLicensePlate).getData();
+
+ GetCouponResp resp = new GetCouponResp();
+ resp.setRecordId(data.getId());
+ resp.setCarNumber(carNumber);
+ // todo 需要第三方提供数据
+ resp.setSysOrgId("");
+ resp.setPosName("");
+ resp.setLssuer("admin");
+ resp.setType(4);
+ Parameter parameter = new Parameter();
+ parameter.setFreeFlag(false);
+ if(null == tChargingOrder){
+ //按照非充电进行优惠计算
+ resp.setCouponName("普通停车时长优惠");
+ parameter.setTime(parkingLot.getNonChargeFreeDuration());
+ data.setFreeDuration(parkingLot.getNonChargeFreeDuration());
+ parkingRecordClient.updateParkingRecord(data);
+ }else{
+ resp.setCouponName("充电停车时长优惠");
+ parameter.setTime(parkingLot.getChargeFreeDuration());
+ data.setFreeDuration(parkingLot.getNonChargeFreeDuration());
+ data.setChargingOrderId(tChargingOrder.getId());
+ data.setAppUserId(tChargingOrder.getAppUserId());
+ parkingRecordClient.updateParkingRecord(data);
+ }
+ resp.setParameter(parameter);
+ return resp;
+ }
+
+
+ /**
+ * 使用优惠券
+ * @param req
+ */
+ public void usedCoupon(UsedCoupon req){
+ TParkingRecord data = parkingRecordClient.getParkingRecordById(Long.valueOf(req.getRecordId())).getData();
+ data.setSerialnumber(req.getSerialnumber());
+ data.setFreeAmount(new BigDecimal(req.getActualFee()));
+ data.setOrderAmount(new BigDecimal(req.getFee()));
+ BigDecimal subtract = data.getOrderAmount().subtract(data.getFreeAmount());
+ if(BigDecimal.ZERO.compareTo(subtract) < 0){
+ data.setTimeoutAmount(subtract);
+ data.setOutParkingType(1);
+ data.setStatus(3);
+ }else{
+ data.setTimeoutAmount(BigDecimal.ZERO);
+ data.setOutParkingType(2);
+ data.setStatus(2);
+ }
+ parkingRecordClient.updateParkingRecord(data);
+ }
+}
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/ParkingOrderService.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/ParkingOrderService.java
new file mode 100644
index 0000000..bb2f544
--- /dev/null
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/ParkingOrderService.java
@@ -0,0 +1,134 @@
+package com.ruoyi.integration.barrierGate.server;
+
+import com.ruoyi.account.api.feignClient.AppUserCarClient;
+import com.ruoyi.chargingPile.api.feignClient.ParkingLotClient;
+import com.ruoyi.chargingPile.api.feignClient.ParkingRecordClient;
+import com.ruoyi.chargingPile.api.model.TParkingLot;
+import com.ruoyi.chargingPile.api.model.TParkingRecord;
+import com.ruoyi.chargingPile.api.vo.GetParkingRecord;
+import com.ruoyi.integration.barrierGate.model.CloudParkingOrder;
+import com.ruoyi.integration.barrierGate.model.CloudParkingSpace;
+import com.ruoyi.integration.barrierGate.model.OfflineParkingOrder;
+import com.ruoyi.integration.barrierGate.model.OfflineParkingSpace;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.Date;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/9/5 16:15
+ */
+@Service
+public class ParkingOrderService {
+
+ @Resource
+ private ParkingRecordClient parkingRecordClient;
+
+ @Resource
+ private AppUserCarClient appUserCarClient;
+
+ @Resource
+ private ParkingLotClient parkingLotClient;
+
+
+
+
+
+ /**
+ * 云停车入场记录
+ * @param order
+ */
+ public void cloudParkingInOrder(CloudParkingOrder order) {
+ TParkingRecord parkingRecord = new TParkingRecord();
+ parkingRecord.setLicensePlate(order.getPlate());
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
+ String code = "TC" + Math.random() * 1000 + sdf.format(new Date());
+ parkingRecord.setCode(code);
+ parkingRecord.setVehicleColor(order.getPlateColor());
+ TParkingLot data = parkingLotClient.getParkingLotByAppKey(order.getAppkey()).getData();
+ parkingRecord.setParkingLotId(data.getId());
+ parkingRecord.setInParkingTime(LocalDateTime.parse(order.getEnterDateTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+ parkingRecord.setStatus(1);
+ parkingRecord.setCreateTime(LocalDateTime.now());
+ parkingRecord.setSerialnumber(order.getId());
+ parkingRecordClient.addParkingRecord(parkingRecord);
+ }
+
+
+ /**
+ * 云停车出场记录
+ * @param order
+ */
+ public void cloudParkingOutOrder(CloudParkingOrder order) {
+ GetParkingRecord query = new GetParkingRecord();
+ query.setLicensePlate(order.getPlate());
+ query.setStatus(1);
+ TParkingRecord parkingRecord = parkingRecordClient.getParkingRecord(query).getData();
+ parkingRecord.setOutParkingTime(LocalDateTime.parse(order.getLeaveDateTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+ parkingRecord.setParkingDuration(Integer.valueOf(order.getLongTime()));
+ parkingRecord.setOrderAmount(new BigDecimal(order.getReceivable()));
+ BigDecimal payment = new BigDecimal(order.getPayment());
+ parkingRecord.setStatus(BigDecimal.ZERO.compareTo(payment) == 0 ? 2 : 3);
+ parkingRecordClient.updateParkingRecord(parkingRecord);
+ }
+
+
+ /**
+ * 云停车实时车位
+ * @param parkingSpace
+ */
+ public void cloudParkingSpace(CloudParkingSpace parkingSpace){
+
+ }
+
+
+ /**
+ * 线下停车场入场记录
+ * @param order
+ */
+ public void offlineParkingInOrder(OfflineParkingOrder order) {
+ TParkingRecord parkingRecord = new TParkingRecord();
+ parkingRecord.setLicensePlate(order.getPlatenumber());
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
+ String code = "TC" + Math.random() * 1000 + sdf.format(new Date());
+ parkingRecord.setCode(code);
+ parkingRecord.setVehicleColor(order.getPlatecolor());
+ TParkingLot data = parkingLotClient.getParkingLotByAppKey(order.getAppkey()).getData();
+ parkingRecord.setParkingLotId(data.getId());
+ parkingRecord.setInParkingTime(LocalDateTime.parse(order.getEntertime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+ parkingRecord.setStatus(1);
+ parkingRecord.setCreateTime(LocalDateTime.now());
+ parkingRecord.setSerialnumber(order.getId());
+ parkingRecordClient.addParkingRecord(parkingRecord);
+ }
+
+
+ /**
+ * 线下停车场出场记录
+ * @param order
+ */
+ public void offlineParkingOutOrder(OfflineParkingOrder order) {
+ GetParkingRecord query = new GetParkingRecord();
+ query.setLicensePlate(order.getPlatenumber());
+ query.setStatus(1);
+ TParkingRecord parkingRecord = parkingRecordClient.getParkingRecord(query).getData();
+ parkingRecord.setOutParkingTime(LocalDateTime.parse(order.getLeavetime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+ parkingRecord.setParkingDuration(Integer.valueOf(order.getLongTime()));
+ parkingRecord.setOrderAmount(new BigDecimal(order.getMoney()));
+ parkingRecordClient.updateParkingRecord(parkingRecord);
+ }
+
+
+ /**
+ * 线下停车场实时车位
+ * @param parkingSpace
+ */
+ public void offlineParkingSpace(OfflineParkingSpace parkingSpace){
+
+ }
+}
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/UploadRealTimeMonitoringDataController.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/UploadRealTimeMonitoringDataController.java
index aedff15..b3b1995 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/UploadRealTimeMonitoringDataController.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/UploadRealTimeMonitoringDataController.java
@@ -9,6 +9,7 @@
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import java.util.ArrayList;
import java.util.List;
import java.util.Set;
@@ -40,6 +41,25 @@
}
return R.ok();
}
+
+ /**
+ * 批量查询
+ * @param orderId
+ * @return
+ */
+ @PostMapping(value = "/getOrderInfoByCodes")
+ public R<List<UploadRealTimeMonitoringData>> getOrderInfoByCodes(@RequestParam("orderId") String orderId){
+ List<UploadRealTimeMonitoringData> res = new ArrayList<>();
+ for (String s : orderId.split(",")) {
+ List<UploadRealTimeMonitoringData> dataByOrderCode = uploadRealTimeMonitoringDataService.getDataByOrderCode(s);
+ if(dataByOrderCode.size() > 0){
+ UploadRealTimeMonitoringData uploadRealTimeMonitoringData = dataByOrderCode.get(dataByOrderCode.size() - 1);
+ res.add(uploadRealTimeMonitoringData);
+ }
+
+ }
+ return R.ok(res);
+ }
/**
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/config/IotDAConfig.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/config/IotDAConfig.java
index 27e04ad..c69b333 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/config/IotDAConfig.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/config/IotDAConfig.java
@@ -20,15 +20,15 @@
*/
private String sk;
/**
- * endpoint配置 938d8d39e2.iotda.cn-north-4.myhuaweicloud.com
+ * endpoint配置 94cb3eb5f9.st1.iotda-app.cn-south-1.myhuaweicloud.com
*/
private String endpoint;
/**
- * project_id配置 0cc59978c61e4b4da24e8c3d02937b45
+ * project_id配置 f31c21e190e04fb0aebf8c0b1e7959cd
*/
private String projectId;
/**
- * Instance-Id配置 c60f266a-57a2-460c-a24e-eabda84602eb
+ * Instance-Id配置 d21a37d3-c578-43aa-a1ab-be3854e7c337
*/
private String instanceId;
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/token/IotTokenUtil.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/token/IotTokenUtil.java
index c2a2428..91d8a7f 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/token/IotTokenUtil.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/token/IotTokenUtil.java
@@ -5,9 +5,9 @@
import com.huaweicloud.sdk.core.exception.ServiceResponseException;
import com.huaweicloud.sdk.iam.v3.model.*;
import com.ruoyi.common.redis.service.RedisService;
-import com.ruoyi.integration.iotda.constant.IotConstant;
import com.ruoyi.integration.iotda.builder.IotBuilder;
import com.ruoyi.integration.iotda.config.IotAccountConfig;
+import com.ruoyi.integration.iotda.constant.IotConstant;
import com.ruoyi.integration.iotda.utils.time.UtcToSeconds;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java
index d219870..4416b85 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java
@@ -18,6 +18,7 @@
import com.ruoyi.order.api.model.TChargingBill;
import com.ruoyi.order.api.model.TChargingOrder;
import com.ruoyi.order.api.query.TOrderInvoiceQuery;
+import com.ruoyi.order.api.vo.AccountListVO;
import com.ruoyi.order.api.vo.ChargingBillListVO;
import com.ruoyi.order.api.vo.ChargingBillVO;
import com.ruoyi.order.api.model.ChargingListQuery;
@@ -66,7 +67,24 @@
@Resource
private TChargingOrderService chargingOrderService;
-
+ @PostMapping(value = "/accountBillList")
+ @ApiOperation(value = "列表查询", tags = {"管理后台-账户结算账单"})
+ public R<AccountListVO> accountBillList(@RequestBody ChargingListQuery dto) {
+ AccountListVO accountListVO = new AccountListVO();
+ ChargingBillVO res = chargingBillService.chargingBillList(dto);
+ dto.setPageCurr(1);
+ dto.setPageSize(99999999);
+ ChargingBillVO res1 = chargingBillService.chargingBillList(dto);
+ List<ChargingBillListVO> records = res1.getList().getRecords();
+ accountListVO.setBillCount(records.size());
+ accountListVO.setTotalAmount(res1.getPaymentAmount().subtract(res1.getRefundAmount()).subtract(res1.getCommissionAmount()).subtract(res1.getSharingAmount()));
+ accountListVO.setPaymentAmount(res1.getPaymentAmount());
+ accountListVO.setRefundAmount(res1.getRefundAmount());
+ accountListVO.setCommissionAmount(res1.getCommissionAmount());
+ accountListVO.setSharingAmount(res1.getSharingAmount());
+ accountListVO.setList(res.getList());
+ return R.ok(accountListVO);
+ }
@PostMapping(value = "/chargingBillList")
@ApiOperation(value = "充电算帐单列表查询", tags = {"管理后台-充电算账单"})
public AjaxResult<ChargingBillVO> chargingBillList(@RequestBody ChargingListQuery dto) {
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java
index 950f938..569f7f2 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java
@@ -1,27 +1,55 @@
package com.ruoyi.order.controller;
+import cn.afterturn.easypoi.excel.ExcelExportUtil;
+import cn.afterturn.easypoi.excel.entity.ExportParams;
import com.ruoyi.account.api.feignClient.AppUserCarClient;
import com.ruoyi.account.api.feignClient.AppUserClient;
import com.ruoyi.chargingPile.api.feignClient.ChargingGunClient;
import com.ruoyi.chargingPile.api.feignClient.ChargingPileClient;
import com.ruoyi.chargingPile.api.feignClient.ParkingLotClient;
import com.ruoyi.chargingPile.api.feignClient.SiteClient;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.utils.DateUtils;
+import com.ruoyi.common.core.utils.WebUtils;
import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.web.page.PageInfo;
+import com.ruoyi.common.log.annotation.Log;
+import com.ruoyi.common.log.enums.BusinessType;
import com.ruoyi.common.redis.service.RedisService;
import com.ruoyi.common.security.service.TokenService;
+import com.ruoyi.order.api.dto.SettlementConfirmAdd;
+import com.ruoyi.order.api.model.ChargingListQuery;
+import com.ruoyi.order.api.model.TChargingOrder;
+import com.ruoyi.order.api.model.TSettlementConfirm;
+import com.ruoyi.order.api.query.SettlementListQuery;
+import com.ruoyi.order.api.query.TOrderInvoiceQuery;
+import com.ruoyi.order.api.vo.ChargingOrderListVO;
+import com.ruoyi.order.api.vo.SettlementTotalVO;
+import com.ruoyi.order.api.vo.TOrderInvoiceVO;
+import com.ruoyi.order.export.OrderInvoiceExport;
+import com.ruoyi.order.export.TChargingOrderExport;
import com.ruoyi.order.vo.ChargingOrderListInfoVO;
import com.ruoyi.order.api.vo.ChargingOrderTimeVO;
-import com.ruoyi.order.api.model.ChargingListQuery;
import com.ruoyi.order.service.*;
import com.ruoyi.payment.api.feignClient.AliPaymentClient;
import com.ruoyi.payment.api.feignClient.WxPaymentClient;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.net.URLEncoder;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.List;
/**
* <p>
@@ -38,59 +66,95 @@
@Resource
private TChargingOrderService chargingOrderService;
- @Autowired
- private TokenService tokenService;
- @Autowired
- private TOrderEvaluateService orderEvaluateService;
-
@Resource
- private WxPaymentClient wxPaymentClient;
-
- @Resource
- private RedisService redisService;
-
- @Resource
- private AliPaymentClient aliPaymentClient;
- @Resource
- private TShoppingOrderService shoppingOrderService;
-
- @Resource
- private AppUserClient appUserClient;
-
- @Resource
- private TVipOrderService vipOrderService;
- @Resource
- private ParkingLotClient parkingLotClient;
- @Resource
- private TChargingOrderRefundService chargingOrderRefundService;
-
- @Resource
- private TShoppingOrderRefundService shoppingOrderRefundService;
- @Resource
- private TVipOrderRefundService vipOrderRefundService;
- @Resource
- private SiteClient siteClient;
- @Resource
- private ChargingPileClient chargingPileClient;
- @Resource
- private ChargingGunClient chargingGunClient;
- @Resource
- private AppUserCarClient appUserCarClient;
- @Resource
- private TChargingOrderAccountingStrategyService chargingOrderAccountingStrategyService;
- @ResponseBody
+ private TSettlementConfirmService tSettlementConfirmService;
@PostMapping(value = "/chargingList")
@ApiOperation(value = "充电时段统计列表", tags = {"管理后台-财务结算"})
public AjaxResult<ChargingOrderTimeVO> chargingList(@RequestBody ChargingListQuery dto) {
ChargingOrderTimeVO res = chargingOrderService.chargingList(dto);
return AjaxResult.success(res);
}
- @ResponseBody
@GetMapping(value = "/chargingInfo")
@ApiOperation(value = "充电时段统计列表-查看详情", tags = {"管理后台-财务结算"})
public AjaxResult<ChargingOrderListInfoVO> chargingInfo(String uid) {
ChargingOrderListInfoVO res = chargingOrderService.chargingInfo(uid);
return AjaxResult.success(res);
}
+ @ApiOperation(value = "充电时段统计-导出", tags = {"管理后台-财务结算"})
+ @PostMapping("/export")
+ public void export(@RequestBody ChargingListQuery dto)
+ {
+ ChargingOrderTimeVO res = chargingOrderService.chargingList(dto);
+ List<TChargingOrderExport> tChargingOrderExports = new ArrayList<>();
+ List<ChargingOrderListVO> exportList = res.getExportList();
+ for (ChargingOrderListVO chargingOrderListVO : exportList) {
+ TChargingOrderExport tChargingOrderExport = new TChargingOrderExport();
+ BeanUtils.copyProperties(chargingOrderListVO,tChargingOrderExport);
+ tChargingOrderExports.add(tChargingOrderExport);
+
+ }
+ Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), TChargingOrderExport.class, tChargingOrderExports);
+ HttpServletResponse response = WebUtils.response();
+ response.setContentType("application/vnd.ms-excel");
+ response.setCharacterEncoding("utf-8");
+ ServletOutputStream outputStream = null;
+ try {
+ String fileName = URLEncoder.encode("充电时段统计导出.xls", "utf-8");
+ response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
+ response.setContentType("application/vnd.ms-excel;charset=UTF-8");
+ response.setHeader("Pragma", "no-cache");
+ response.setHeader("Cache-Control", "no-cache");
+ outputStream = response.getOutputStream();
+ workbook.write(outputStream);
+ } catch (IOException e) {
+ e.printStackTrace();
+ } finally {
+ try {
+ outputStream.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ @GetMapping(value = "/settlementTotal")
+ @ApiOperation(value = "结算汇总-列表查询", tags = {"管理后台-财务结算"})
+ @ApiParam(name = "time", value = "汇报时间2024-01-01 00:00:00")
+ public AjaxResult<SettlementTotalVO> settlementTotal(String time) {
+ SettlementTotalVO res = chargingOrderService.settlementTotal(time);
+ return AjaxResult.success(res);
+ }
+ @GetMapping(value = "/settlementTotalR")
+ public R<SettlementTotalVO> settlementTotalR( String time) {
+ SettlementTotalVO res = chargingOrderService.settlementTotal(time);
+ return R.ok(res);
+ }
+ @PostMapping(value = "/settlementAdd")
+ @ApiOperation(value = "结算确认表-生成/保存结算确认表", tags = {"管理后台-财务结算"})
+ public R<TSettlementConfirm> settlementAdd(@RequestBody SettlementConfirmAdd dto) {
+ TSettlementConfirm res = chargingOrderService.settlementAdd(dto);
+ return R.ok(res);
+ }
+ @PostMapping(value = "/settlementList")
+ @ApiOperation(value = "结算表记录-列表查询", tags = {"管理后台-财务结算"})
+ public R<PageInfo<TSettlementConfirm>> settlementList(@RequestBody SettlementListQuery dto) {
+ PageInfo<TSettlementConfirm> res = chargingOrderService.settlementList(dto);
+ return R.ok(res);
+ }
+ @GetMapping(value = "/downloadSettlement/{uid}")
+ public R<TSettlementConfirm> downloadSettlement(@PathVariable("uid") String uid) {
+ TSettlementConfirm byId = tSettlementConfirmService.getById(uid);
+ if (byId!=null){
+ List<TChargingOrder> list = chargingOrderService.lambdaQuery().eq(TChargingOrder::getSiteId, byId.getSiteId())
+ .between(TChargingOrder::getStartTime, byId.getStartTime(), byId.getEndTime())
+ .eq(TChargingOrder::getStatus, 5)
+ .eq(TChargingOrder::getRechargePaymentStatus, 2).list();
+ byId.setList(list);
+ String format = byId.getStartTime().format(DateTimeFormatter.ofPattern("yyyy年MM月dd日HH:mm:ss"));
+ String format1 = byId.getEndTime().format(DateTimeFormatter.ofPattern("yyyy年MM月dd日HH:mm:ss"));
+ byId.setTime(format+"至"+format1);
+ }
+ return R.ok(byId);
+ }
+
}
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 009e275..d12f4b6 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
@@ -41,6 +41,10 @@
import com.ruoyi.order.api.query.TChargingCountQuery;
import com.ruoyi.order.api.query.UploadRealTimeMonitoringDataQuery;
import com.ruoyi.order.api.vo.*;
+import com.ruoyi.order.api.vo.ChargingOrderInfoVO;
+import com.ruoyi.order.api.vo.ChargingOrderVO;
+import com.ruoyi.order.api.vo.GetChargingOrderByLicensePlate;
+import com.ruoyi.order.api.vo.TCharingOrderVO;
import com.ruoyi.order.dto.GetMyChargingOrderList;
import com.ruoyi.order.dto.GetNoInvoicedOrder;
import com.ruoyi.order.dto.MyChargingOrderInfo;
@@ -257,6 +261,13 @@
@PostMapping(value = "/pay/order/refund/list")
@ApiOperation(value = "列表", tags = {"管理后台-支付订单-退款订单"})
public R<PageInfo<TChargingOrderRefund>> refundList(@RequestBody ChargingRefundDto chargingRefundDto) {
+ return chargingOrderService.getRefundList(chargingRefundDto);
+
+ }
+ @ResponseBody
+ @PostMapping(value = "/pay/order/refund/list1")
+ @ApiOperation(value = "列表1", tags = {"管理后台-支付订单-退款订单"})
+ public R<PageInfo<TChargingOrderRefund>> refundList1(@RequestBody ChargingRefundDto chargingRefundDto) {
return chargingOrderService.getRefundList(chargingRefundDto);
}
@@ -921,4 +932,16 @@
public void excelEndCharge(@RequestParam("code") String code){
chargingOrderService.excelEndCharge(code);
}
+
+
+ /**
+ * 根据车牌号和时间查询有效的充电数据
+ * @param query
+ * @return
+ */
+ @PostMapping("/getChargingOrderByLicensePlate")
+ public R<TChargingOrder> getChargingOrderByLicensePlate(@RequestBody GetChargingOrderByLicensePlate query){
+ TChargingOrder chargingOrder = chargingOrderService.getChargingOrderByLicensePlate(query);
+ return R.ok(chargingOrder);
+ }
}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/export/TChargingOrderExport.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/export/TChargingOrderExport.java
new file mode 100644
index 0000000..08c1165
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/export/TChargingOrderExport.java
@@ -0,0 +1,159 @@
+package com.ruoyi.order.export;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+@Data
+@ApiModel(value = "充电时段统计-导出")
+public class TChargingOrderExport implements Serializable {
+ @Excel(name = "序号",width = 30)
+ private Integer id;
+ @Excel(name = "订单编号",width = 30)
+ private String code;
+ @Excel(name = "电站编号",width = 30)
+ private String siteCode;
+ @Excel(name = "电站名称",width = 30)
+ private String siteName;
+ @Excel(name = "终端名称",width = 30)
+ private String terminalName;
+ @Excel(name = "所属城市",width = 30)
+ private String city;
+ @Excel(name = "市区名称",width = 30)
+ private String cityName;
+ @Excel(name = "所属合作商",width = 30)
+ private String partner;
+ @Excel(name = "电站类型",width = 30,replace = {"其他_0","公共_1","个人_2","公交_3","环卫_4","物流_5","出租车_6"})
+ private Integer siteType;
+ @Excel(name = "售电模式",width = 30,replace = {"正常使用_1","维修中_2","关闭下线_3"})
+ private String saleType;
+ @Excel(name = "运营类型",width = 30,replace = {"直营_1","非直营_2"})
+ private String businessCategory;
+ @Excel(name = "计费模板",width = 30)
+ private String name;
+ @Excel(name = "收款方式",width = 30,replace = {"线上_1","线下_2"})
+ private String orderClassification;
+ @Excel(name = "充电启动方式",width = 30)
+ private String startType;
+ @Excel(name = "一级来源",width = 30)
+ private String one;
+ @Excel(name = "二级来源",width = 30)
+ private String two;
+ @Excel(name = "订单创建时间",width = 30)
+ private String createTime;
+ @Excel(name = "充电开始时间",width = 30)
+ private String startTime;
+ @Excel(name = "充电结束时间",width = 30)
+ private String endTime;
+ @Excel(name = "订单状态",width = 30,replace = {"待支付_1","已支付_2"})
+ private String rechargePaymentStatus;
+ @Excel(name = "订单类型",width = 30)
+ private String type;
+ @Excel(name = "充电形式",width = 30)
+ private String chargingType;
+ @Excel(name = "判定结束原因",width = 30,replace = {"异常终止_0","主动终止_1","满电终止_2","费用不足终止_3"})
+ private String endmode;
+ @Excel(name = "充电结束账号",width = 30)
+ private String chargingEndAccount;
+ @Excel(name = "是否是免费订单",width = 30)
+ private String isFree;
+ @Excel(name = "充电电费(元)",width = 30)
+ private String electrovalence;
+ @Excel(name = "充电服务费(元)",width = 30)
+ private String serviceCharge;
+ @Excel(name = "充电费用(元)",width = 30)
+ private String total;
+ @Excel(name = "充电电量(度)",width = 30)
+ private String chargingCapacity;
+ @Excel(name = "平均电费单价(元)",width = 30)
+ private String electrovalencePrice;
+ @Excel(name = "平均服务费实际单价(元)",width = 30)
+ private String serviceChargePrice;
+ @Excel(name = "平均服务费挂牌单价(元)",width = 30)
+ private String serviceChargePriceLook;
+ @Excel(name = "充电时长(分钟)",width = 30)
+ private String cumulativeChargingTime;
+ @Excel(name = "充电前面soc",width = 30)
+ private String startSoc;
+ @Excel(name = "充电后soc",width = 30)
+ private String endtSoc;
+ @Excel(name = "是否限制soc",width = 30)
+ private String isSoc;
+ @Excel(name = "限制soc方式",width = 30)
+ private String isSocType;
+ @Excel(name = "限制soc值",width = 30)
+ private String isSocNum;
+ @Excel(name = "客户类型",width = 30)
+ private String userType;
+ @Excel(name = "会员类型",width = 30)
+ private String vipType;
+ @Excel(name = "是否PLUS订单",width = 30)
+ private String isPlus;
+ @Excel(name = "客户编号",width = 30)
+ private String userCode;
+ @Excel(name = "真实姓名",width = 30)
+ private String realName;
+ @Excel(name = "设备号",width = 30)
+ private String deviceCode;
+ @Excel(name = "手机号",width = 30)
+ private String phone;
+ @Excel(name = "昵称",width = 30)
+ private String nickName;
+ @Excel(name = "企业编号",width = 30)
+ private String companyCode;
+ @Excel(name = "企业名称",width = 30)
+ private String companyName;
+ @Excel(name = "扣费账户类型",width = 30)
+ private String accountType;
+ @Excel(name = "使用人",width = 30)
+ private String useUser;
+ @Excel(name = "卡号",width = 30)
+ private String bankCard;
+ @Excel(name = "代充使用人",width = 30)
+ private String replaceUser;
+ @Excel(name = "车架号",width = 30)
+ private String carSiteName;
+ @Excel(name = "车架号来源",width = 30)
+ private String carSiteSource;
+ @Excel(name = "车牌号",width = 30)
+ private String carNumber;
+ @Excel(name = "发动机号",width = 30)
+ private String carEngineNumber;
+ @Excel(name = "车辆自编号",width = 30)
+ private String carNumberCode;
+ @Excel(name = "第三方商户订单",width = 30)
+ private String orderCode;
+ @Excel(name = "判定车牌号",width = 30)
+ private String carNumberSource;
+ @Excel(name = "是否单枪",width = 30)
+ private String isSingle;
+ @Excel(name = "选择车型",width = 30)
+ private String carType;
+ @Excel(name = "车辆品牌",width = 30)
+ private String carBrand;
+ @Excel(name = "判定车系",width = 30)
+ private String carSeries;
+ @Excel(name = "判定车系来源",width = 30)
+ private String carSeriesSource;
+ @Excel(name = "收款时间",width = 30)
+ private String payTime;
+ @Excel(name = "电费结算方编码",width = 30)
+ private String electrovalenceSiteCode;
+ @Excel(name = "电费结算方名称",width = 30)
+ private String electrovalenceSiteName;
+ @Excel(name = "管理公司",width = 30)
+ private String companyNameAdmin;
+ @Excel(name = "计费方式",width = 30)
+ private String moneyType;
+ @Excel(name = "设备接入方式",width = 30)
+ private String deviceType;
+ @Excel(name = "核算公司",width = 30)
+ private String settlementCompanyName;
+ @Excel(name = "预支付类型",width = 30)
+ private String prePaymentType;
+ @Excel(name = "是否安全防护订单",width = 30)
+ private String isSecurity;
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TSettlementConfirmMapper.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TSettlementConfirmMapper.java
new file mode 100644
index 0000000..260ee56
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TSettlementConfirmMapper.java
@@ -0,0 +1,33 @@
+package com.ruoyi.order.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.common.core.web.page.PageInfo;
+import com.ruoyi.order.api.model.TSettlementConfirm;
+import com.ruoyi.order.api.model.TVipOrder;
+import com.ruoyi.order.api.query.SettlementListQuery;
+import com.ruoyi.order.api.query.VipShoppingOrderQuery;
+import com.ruoyi.order.dto.SixVipDto;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import javax.validation.constraints.Pattern;
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.util.List;
+
+/**
+ * <p>
+ * Mapper 接口
+ * </p>
+ *
+ * @author xiaochen
+ * @since 2024-08-07
+ */
+@Mapper
+public interface TSettlementConfirmMapper extends BaseMapper<TSettlementConfirm> {
+
+
+ List<TSettlementConfirm> settlementList(@Param("pageInfo") PageInfo<TSettlementConfirm> pageInfo, @Param("req") SettlementListQuery dto);
+
+ List<TSettlementConfirm> settlementTotal(@Param("time") String time);
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java
index 742f396..61aad66 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java
@@ -6,13 +6,15 @@
import com.ruoyi.common.core.dto.ChargingPercentProvinceDto;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.page.PageInfo;
+import com.ruoyi.order.api.dto.SettlementConfirmAdd;
import com.ruoyi.order.api.model.ChargingListQuery;
import com.ruoyi.order.api.model.TChargingOrder;
import com.ruoyi.order.api.model.TChargingOrderRefund;
+import com.ruoyi.order.api.model.TSettlementConfirm;
import com.ruoyi.order.api.query.ChargingOrderQuery;
+import com.ruoyi.order.api.query.SettlementListQuery;
import com.ruoyi.order.api.query.UploadRealTimeMonitoringDataQuery;
-import com.ruoyi.order.api.vo.ChargingOrderTimeVO;
-import com.ruoyi.order.api.vo.TCharingOrderVO;
+import com.ruoyi.order.api.vo.*;
import com.ruoyi.order.dto.*;
import com.ruoyi.order.vo.ChargingOrderListInfoVO;
import org.springframework.web.bind.annotation.RequestBody;
@@ -183,4 +185,19 @@
Long getAver(List<Integer> siteIds);
List<Map<String, Object>> getLevelEvaluate(List<Integer> siteIds);
+
+
+ /**
+ * 根据车牌号和开始时间查询充电数据
+ * @param query
+ * @return
+ */
+ TChargingOrder getChargingOrderByLicensePlate(GetChargingOrderByLicensePlate query);
+
+
+ TSettlementConfirm settlementAdd(SettlementConfirmAdd dto);
+
+ PageInfo<TSettlementConfirm> settlementList(SettlementListQuery dto);
+
+ SettlementTotalVO settlementTotal(String time);
}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TSettlementConfirmService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TSettlementConfirmService.java
new file mode 100644
index 0000000..f46e6dd
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TSettlementConfirmService.java
@@ -0,0 +1,24 @@
+package com.ruoyi.order.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.common.core.web.page.PageInfo;
+import com.ruoyi.order.api.model.TSettlementConfirm;
+import com.ruoyi.order.api.model.TVipOrder;
+import com.ruoyi.order.api.query.VipShoppingOrderQuery;
+import com.ruoyi.order.dto.SixVipDto;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.util.List;
+
+/**
+ * <p>
+ * 服务类
+ * </p>
+ *
+ * @author xiaochen
+ * @since 2024-08-07
+ */
+public interface TSettlementConfirmService extends IService<TSettlementConfirm> {
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java
index e1cf6a0..e72db84 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java
@@ -80,6 +80,7 @@
BigDecimal sharingAmountTotal = new BigDecimal("0");
BigDecimal chargingCapacityTotal = new BigDecimal("0");
BigDecimal discountTotal = new BigDecimal("0");
+ BigDecimal refundAmount = new BigDecimal("0");
int orderCount = 0;
for (ChargingBillListVO chargingBillListVO : list) {
String temp = "";
@@ -243,6 +244,9 @@
electrovalence = electrovalence.add(tChargingOrder.getElectrovalence());
electrovalenceTotal = electrovalenceTotal.add(tChargingOrder.getElectrovalence());
}
+ if (tChargingOrder.getRefundAmount()!=null && tChargingOrder.getRefundStatus() == 2){
+ refundAmount = refundAmount.add(tChargingOrder.getRefundAmount());
+ }
// 累加累计服务费
if (tChargingOrder.getServiceCharge()!=null){
serviceCharge = serviceCharge.add(tChargingOrder.getServiceCharge());
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 8bd83ae..3dbf5be 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
@@ -1,7 +1,9 @@
package com.ruoyi.order.service.impl;
+import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -29,17 +31,17 @@
import com.ruoyi.integration.api.feignClient.*;
import com.ruoyi.integration.api.model.*;
import com.ruoyi.integration.api.vo.GetPlatformStopChargingReply;
+import com.ruoyi.order.api.dto.SettlementConfirmAdd;
import com.ruoyi.order.api.feignClient.AccountingStrategyDetailOrderClient;
import com.ruoyi.order.api.feignClient.ChargingOrderAccountingStrategyClient;
import com.ruoyi.order.api.model.*;
import com.ruoyi.order.api.query.ChargingOrderQuery;
+import com.ruoyi.order.api.query.SettlementListQuery;
import com.ruoyi.order.api.query.UploadRealTimeMonitoringDataQuery;
-import com.ruoyi.order.api.vo.ChargingOrderListVO;
-import com.ruoyi.order.api.vo.ChargingOrderTimeVO;
-import com.ruoyi.order.api.vo.ChargingOrderVO;
-import com.ruoyi.order.api.vo.TCharingOrderVO;
+import com.ruoyi.order.api.vo.*;
import com.ruoyi.order.dto.*;
import com.ruoyi.order.mapper.TChargingOrderMapper;
+import com.ruoyi.order.mapper.TSettlementConfirmMapper;
import com.ruoyi.order.service.TChargingOrderAccountingStrategyService;
import com.ruoyi.order.service.TChargingOrderRefundService;
import com.ruoyi.order.service.TChargingOrderService;
@@ -50,6 +52,7 @@
import com.ruoyi.order.vo.ChargingOrderListInfoVO;
import com.ruoyi.other.api.domain.TIntegralRule;
import com.ruoyi.other.api.feignClient.IntegralRuleClient;
+import com.ruoyi.other.api.feignClient.OtherClient;
import com.ruoyi.other.api.feignClient.RoleSiteClient;
import com.ruoyi.other.api.feignClient.UserSiteClient;
import com.ruoyi.payment.api.feignClient.AliPaymentClient;
@@ -59,6 +62,7 @@
import com.ruoyi.payment.api.model.WxPaymentRefundModel;
import com.ruoyi.payment.api.vo.*;
import com.ruoyi.system.api.feignClient.SysUserClient;
+import com.sun.org.apache.bcel.internal.generic.NEW;
import io.seata.spring.annotation.GlobalTransactional;
import io.swagger.annotations.ApiModelProperty;
import org.slf4j.Logger;
@@ -96,10 +100,13 @@
@Resource
private ChargingGunClient chargingGunClient;
-
+ @Resource
+ private TSettlementConfirmMapper tSettlementConfirmMapper;
+
@Resource
private SiteClient siteClient;
-
+
+
@Resource
private AppUserCarClient appUserCarClient;
@Resource
@@ -107,7 +114,6 @@
@Resource
private ChargingPileClient chargingPileClient;
-
@Resource
private TChargingOrderAccountingStrategyService chargingOrderAccountingStrategyService;
@@ -120,7 +126,6 @@
@Resource
private AliPaymentClient aliPaymentClient;
-
@Resource
private AppCouponClient appCouponClient;
@@ -440,7 +445,7 @@
chargingOrder.setVipDiscountAmount(discountAmount);
}
}
-
+
}
this.save(chargingOrder);
@@ -592,7 +597,7 @@
preChargeCheck1.setFailureCause(failure_cause);
//启动失败后取消订单,退款操作
refund(code);
- order.setStatus(5);
+ order.setStatus(-1);
order.setEndMode(0);
}else{
preChargeCheck1.setStartupSuccess(2);
@@ -639,7 +644,7 @@
model.setOut_trade_no(chargingOrder.getCode());
model.setOut_refund_no(chargingOrderRefund.getRefundCode());
model.setReason("充电失败,取消充电订单");
- model.setNotify_url("http://127.0.0.1:9000/order/t-charging-order/chargingOrderStartupFailureWxRefund");
+ model.setNotify_url("http://221.182.45.100:9000/order/t-charging-order/chargingOrderStartupFailureWxRefund");
WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount();
amount.setRefund(rechargeAmount.multiply(new BigDecimal(100)).intValue());
amount.setTotal(rechargeAmount.multiply(new BigDecimal(100)).intValue());
@@ -949,7 +954,7 @@
model.setOut_trade_no(chargingOrder.getCode());
model.setOut_refund_no(chargingOrderRefund.getRefundCode());
model.setReason("充电完成退款");
- model.setNotify_url("http://127.0.0.1:9000/order/t-charging-order/chargingOrderStartupFailureWxRefund");
+ model.setNotify_url("http://221.182.45.100:9000/order/t-charging-order/chargingOrderStartupFailureWxRefund");
WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount();
amount.setRefund(refundAmount.multiply(new BigDecimal(100)).intValue());
amount.setTotal(rechargeAmount.multiply(new BigDecimal(100)).intValue());
@@ -1240,6 +1245,7 @@
}
// 不分页
List<ChargingOrderListVO> list1 = this.baseMapper.chargingList1(dto,startTime1,startTime2,endTime1,endTime2);
+ chargingOrderTimeVO.setExportList(list1);
chargingOrderTimeVO.setOrderCount(list1.size());
// 计算充电总度数
BigDecimal electronic = new BigDecimal("0");
@@ -1350,7 +1356,6 @@
chargingOrderListInfoVO.setTerminalName(data2.getName()+data1.getName());
}
chargingOrderListInfoVO.setEndMode(chargingOrder.getEndMode());
- // todo 周一完善
// 获取开始SOC 结束soc
List<UploadRealTimeMonitoringData> data6 = uploadRealTimeMonitoringDataClient.getDataByOrderCode(chargingOrder.getCode()).getData();
if (!data6.isEmpty()){
@@ -1648,7 +1653,7 @@
model.setOut_refund_no(chargingOrderRefund.getRefundCode());
model.setTransaction_id(tChargingOrder.getRechargeSerialNumber());
model.setReason("取消订单");
- model.setNotify_url("http://127.0.0.1:9000/order/t-shopping-order/cancelShoppingOrderWxRefund");
+ model.setNotify_url("http://221.182.45.100:9000/order/t-shopping-order/cancelShoppingOrderWxRefund");
WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount();
amount.setRefund(payOrderQueryDto.getRefundAmount().multiply(new BigDecimal(100)).intValue());
amount.setTotal(tChargingOrder.getPaymentAmount().multiply(new BigDecimal(100)).intValue());
@@ -1684,4 +1689,347 @@
return null;
}
+
+
+ /**
+ * 根据车牌号和开始时间查询充电数据
+ * @param query
+ * @return
+ */
+ @Override
+ public TChargingOrder getChargingOrderByLicensePlate(GetChargingOrderByLicensePlate query) {
+ TAppUserCar appUserCar = appUserCarClient.getAppUserCarByLicensePlate(query.getLicensePlate()).getData();
+ if(null == appUserCar){
+ return null;
+ }
+ TChargingOrder one = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getAppUserCarId, appUserCar.getId())
+ .eq(TChargingOrder::getDelFlag, 0).gt(TChargingOrder::getStartTime, query.getStartTime())
+ .eq(TChargingOrder::getRechargePaymentStatus, 2).ne(TChargingOrder::getStatus, -1));
+ return one;
+ }
+
+ @Override
+ public TSettlementConfirm settlementAdd(SettlementConfirmAdd dto) {
+ List<Site> data = siteClient.getSiteByIds(Arrays.asList(dto.getSiteId())).getData();
+ TSettlementConfirm tSettlementConfirm = new TSettlementConfirm();
+ if (!data.isEmpty()){
+ tSettlementConfirm.setSiteName(data.get(0).getName());
+ tSettlementConfirm.setPartnerId(data.get(0).getPartnerId());
+ if (data.get(0).getPartnerId()!=null){
+ Partner data1 = siteClient.getPartnerR(data.get(0).getPartnerId()).getData();
+ if (data1!=null){
+ tSettlementConfirm.setPartnerName(data1.getName());
+ tSettlementConfirm.setPartnerId(data1.getId());
+ }
+ }
+ }
+ String startTime = dto.getStartTime();
+ String endTime = dto.getEndTime();
+ // 将这两个时间转化为localDateTime
+ tSettlementConfirm.setStartTime(LocalDateTime.parse(startTime));
+ tSettlementConfirm.setEndTime(LocalDateTime.parse(endTime));
+ // 根据站点id和开始时间和结束时间和归属日期 查询充电订单列表
+ QueryWrapper<TChargingOrder> eq = new QueryWrapper<TChargingOrder>()
+ .eq("site_id", dto.getSiteId())
+ .eq("recharge_payment_status",2);
+ switch (dto.getType()){
+ case 1:
+ eq.between("start_time", startTime, endTime);
+ break;
+ case 2:
+ eq.between("end_time", startTime, endTime);
+ break;
+ }
+ List<TChargingOrder> tChargingOrders = this.baseMapper.selectList(eq);
+ // 充电电量 度
+ BigDecimal chargingElectronic = new BigDecimal("0");
+ // 三方收费 分佣
+ BigDecimal sharingAmount = new BigDecimal("0");
+ // 三方交易手续费 三方收费*0.6%
+ BigDecimal commissionAmount = new BigDecimal("0");
+ // 累计电费
+ BigDecimal electrovalence = new BigDecimal("0");
+ // 累计服务费
+ BigDecimal serviceCharge = new BigDecimal("0");
+ // 订单手续费 订单支付金额*0.6%
+ BigDecimal orderCommission = new BigDecimal("0");
+ // 会员抵扣
+ BigDecimal vipDiscount = new BigDecimal("0");
+ // 优惠券抵扣
+ BigDecimal couponDiscount = new BigDecimal("0");
+ // 支付订单金额 需要减去退款金额
+ BigDecimal paymentAmount = new BigDecimal("0");
+ for (TChargingOrder tChargingOrder : tChargingOrders) {
+ // 累加充电总度数
+ chargingElectronic = chargingElectronic.add(tChargingOrder.getChargingCapacity());
+ // 累加分佣
+ sharingAmount = sharingAmount.add(tChargingOrder.getSharingAmount());
+ // 累加电费
+ electrovalence = electrovalence.add(tChargingOrder.getElectrovalence());
+ // 累加服务费
+ serviceCharge = serviceCharge.add(tChargingOrder.getServiceCharge());
+ // 累加会员折扣
+ if (tChargingOrder.getVipDiscountAmount()!=null){
+ vipDiscount = vipDiscount.add(tChargingOrder.getVipDiscountAmount());
+ }
+ // 累加优惠券折扣
+ if (tChargingOrder.getCouponDiscountAmount()!=null){
+ couponDiscount = couponDiscount.add(tChargingOrder.getCouponDiscountAmount());
+ }
+ if (tChargingOrder.getRefundStatus() == 2){
+ // 如果成功退款 那么减去退款金额
+ paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount().subtract(tChargingOrder.getRefundAmount()));
+ }else{
+ paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount());
+ }
+ }
+ // 三方交易手续费 三方收费*0.6%
+ commissionAmount = sharingAmount.multiply(new BigDecimal("0.006"));
+ // 订单手续费 订单支付金额 - 退款金额*0.6%
+ orderCommission = paymentAmount.multiply(new BigDecimal("0.006"));
+ tSettlementConfirm.setSharingAmount(sharingAmount);
+ tSettlementConfirm.setCommissionAmount(commissionAmount);
+ tSettlementConfirm.setElectrovalence(electrovalence);
+ // 服务费=总服务费-三费收费-交易手续费-交易手续费-服务费会员抵扣-服务费优惠券抵扣
+ tSettlementConfirm.setServiceCharge(serviceCharge.subtract(commissionAmount).subtract(sharingAmount).subtract(orderCommission).subtract(vipDiscount).subtract(couponDiscount));
+ tSettlementConfirm.setOrderCommission(orderCommission);
+ tSettlementConfirm.setVipDiscount(vipDiscount);
+ tSettlementConfirm.setCouponDiscount(couponDiscount);
+ tSettlementConfirm.setSiteId(dto.getSiteId());
+ tSettlementConfirm.setMeteringElectronic(dto.getData().getMeteringElectronic());
+ tSettlementConfirm.setChargingElectronic(chargingElectronic);
+ tSettlementConfirm.setLossElectronic(dto.getData().getLossElectronic());
+ tSettlementConfirm.setIncome(chargingElectronic.add(serviceCharge));
+ tSettlementConfirm.setVenue(dto.getData().getVenue());
+ tSettlementConfirm.setMetering(dto.getData().getMetering());
+ tSettlementConfirm.setClean(dto.getData().getClean());
+ tSettlementConfirm.setMaintain(dto.getData().getMaintain());
+ tSettlementConfirm.setCost(dto.getData().getVenue().add(dto.getData().getClean()).add(dto.getData().getMaintain()));
+ tSettlementConfirm.setProfitMoney(new BigDecimal("0"));
+ tSettlementConfirm.setNewMoney(new BigDecimal("0"));
+ tSettlementConfirm.setNewSettlement(new BigDecimal("0"));
+ tSettlementConfirm.setVipDiscount(vipDiscount);
+ tSettlementConfirm.setCouponDiscount(couponDiscount);
+ tSettlementConfirm.setSupplyElectronic(dto.getData().getSupplyElectronic());
+ tSettlementConfirm.setType(dto.getType());
+ tSettlementConfirm.setProportionPartner(dto.getData().getProportionPartner());
+ tSettlementConfirm.setProportionMoney(dto.getData().getProportionMoney());
+ tSettlementConfirm.setTotalElectronic(dto.getData().getTotalElectronic());
+ tSettlementConfirm.setTotalService(dto.getData().getTotalService());
+ tSettlementConfirm.setRemark(dto.getData().getRemark());
+ tSettlementConfirm.setServicePartner(dto.getData().getServicePartner());
+ tSettlementConfirm.setServiceMoney(dto.getData().getServiceMoney());
+ tSettlementConfirm.setTotalService(dto.getData().getTotalService());
+ tSettlementConfirm.setServiceRemark(dto.getData().getServiceRemark());
+ tSettlementConfirm.setDistribution(dto.getData().getDistribution());
+ tSettlementConfirm.setIncome(dto.getData().getElectrovalence().add(dto.getData().getServiceCharge()));
+ if (dto.getState() == 2){
+ tSettlementConfirmMapper.insert(tSettlementConfirm);
+ }
+ return tSettlementConfirm;
+ }
+
+ @Override
+ public PageInfo<TSettlementConfirm> settlementList(SettlementListQuery dto) {
+ PageInfo<TSettlementConfirm> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize());
+ List<TSettlementConfirm> list = tSettlementConfirmMapper.settlementList(pageInfo,dto);
+ for (TSettlementConfirm tSettlementConfirm : list) {
+ tSettlementConfirm.setUid(tSettlementConfirm.getId().toString());
+ Partner data = siteClient.getPartnerR(tSettlementConfirm.getPartnerId()).getData();
+ List<Site> data1 = siteClient.getSiteByIds(Arrays.asList(tSettlementConfirm.getSiteId())).getData();
+ if (!data1.isEmpty()){
+ tSettlementConfirm.setSiteName(data1.get(0).getName());
+ }
+ if (data!=null){
+ tSettlementConfirm.setPartnerName(data.getName());
+ }
+ String format = tSettlementConfirm.getStartTime().format(DateTimeFormatter.ofPattern("yyyy年MM月dd日HH:mm:ss"));
+ String format1 = tSettlementConfirm.getEndTime().format(DateTimeFormatter.ofPattern("yyyy年MM月dd日HH:mm:ss"));
+ tSettlementConfirm.setTime(format+"至"+format1);
+
+
+ }
+ pageInfo.setRecords(list);
+ return null;
+ }
+
+ @Override
+ public SettlementTotalVO settlementTotal(String time) {
+ SettlementTotalVO res = new SettlementTotalVO();
+ List<TSettlementConfirm> list1 = tSettlementConfirmMapper.settlementTotal(time);
+ 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> 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");
+ for (TSettlementConfirm tSettlementConfirm : list1) {
+ List<Site> data1 = siteClient.getSiteByIds(Arrays.asList(tSettlementConfirm.getSiteId())).getData();
+ if (!data1.isEmpty()){
+ tSettlementConfirm.setSiteName(data1.get(0).getName());
+ }
+ meteringElectronic = meteringElectronic.add(tSettlementConfirm.getMeteringElectronic());
+ chargingElectronic = chargingElectronic.add(tSettlementConfirm.getChargingElectronic());
+ 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 = 0L;
+ 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();
+ }
+ List<TChargingPile> data = siteClient.getPileListBySiteId(tSettlementConfirm.getSiteId()).getData();
+ // 计算充电桩的功率平均值
+ BigDecimal bigDecimal = new BigDecimal("0");
+ for (TChargingPile datum : data) {
+ bigDecimal = bigDecimal.add(datum.getRatedPower());
+ }
+ BigDecimal bigDecimal1 = bigDecimal.divide(new BigDecimal(data.size())).setScale(2, RoundingMode.HALF_DOWN);
+
+ tSettlementConfirm.setIncome(tSettlementConfirm.getElectrovalence().add(tSettlementConfirm.getServiceCharge()));
+ // todo 计算利用率 该电站充电桩本月利用率:
+ //利用率=充电量/(桩数量*功率*时间)
+
+ for (TSettlementConfirm settlementConfirm : list2) {
+ settlementConfirm.setIncome(settlementConfirm.getElectrovalence().add(settlementConfirm.getServiceCharge()));
+ if (tSettlementConfirm.getSiteId().equals(settlementConfirm.getSiteId())){
+ // 电站相同比较收入涨幅跌幅
+ BigDecimal subtract = tSettlementConfirm.getIncome().subtract(settlementConfirm.getIncome()).divide(tSettlementConfirm.getIncome()).setScale(2, RoundingMode.HALF_DOWN).multiply(new BigDecimal("100"));
+ tSettlementConfirm.setIncomePercentage(subtract+"%");
+ // 比较总利润 收入合计-成本合计
+ BigDecimal subtract1 = tSettlementConfirm.getIncome().subtract(tSettlementConfirm.getCost());
+ BigDecimal subtract2 = settlementConfirm.getIncome().subtract(settlementConfirm.getCost());
+ tSettlementConfirm.setTotalPercentage(subtract1.subtract(subtract2).divide(subtract2).setScale(2, RoundingMode.HALF_DOWN).multiply(new BigDecimal("100"))+"%");
+ }
+ beforeCost = beforeCost.add(settlementConfirm.getCost());
+ beforeIncome = beforeIncome.add(settlementConfirm.getIncome());
+
+
+ }
+ }
+ TSettlementConfirm tSettlementConfirm = new TSettlementConfirm();
+ 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);
+ // 本月
+ BigDecimal subtract = income.subtract(beforeIncome).divide(beforeIncome).setScale(2, RoundingMode.HALF_DOWN).multiply(new BigDecimal("100"));
+ tSettlementConfirm.setIncomePercentage(subtract+"%");
+ // 比较总利润 收入合计-成本合计
+ BigDecimal subtract1 = income.subtract(cost);
+ BigDecimal subtract2 = beforeIncome.subtract(beforeCost);
+ tSettlementConfirm.setTotalPercentage(subtract1.subtract(subtract2).divide(subtract2).setScale(2, RoundingMode.HALF_DOWN).multiply(new BigDecimal("100"))+"%");
+ tSettlementConfirm.setIncomePercentage(subtract+"%");
+ tSettlementConfirm.setElectronicRefund(0);
+ // 查询上次汇报数据 进行比对涨幅跌幅
+ total.add(tSettlementConfirm);
+ res.setList1(list1);
+ res.setList2(total);
+ return res;
+ }
+
+ public static void main(String[] args) {
+// String format = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy年MM月dd日HH:mm:ss"));
+// String format1 = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy年MM月dd日HH:mm:ss"));
+// System.err.println(format+"至"+format1);
+// LocalDateTime parse = LocalDateTime.parse("2024-01-12 00:00:00", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+// System.err.println(parse.format(DateTimeFormatter.ofPattern("yyyy-dd")));
+ }
}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TSettlementConfirmServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TSettlementConfirmServiceImpl.java
new file mode 100644
index 0000000..c1f0076
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TSettlementConfirmServiceImpl.java
@@ -0,0 +1,34 @@
+package com.ruoyi.order.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.core.web.page.PageInfo;
+import com.ruoyi.order.api.model.TSettlementConfirm;
+import com.ruoyi.order.api.model.TVipOrder;
+import com.ruoyi.order.api.query.VipShoppingOrderQuery;
+import com.ruoyi.order.dto.SixVipDto;
+import com.ruoyi.order.mapper.TSettlementConfirmMapper;
+import com.ruoyi.order.mapper.TVipOrderMapper;
+import com.ruoyi.order.service.TSettlementConfirmService;
+import com.ruoyi.order.service.TVipOrderService;
+import com.ruoyi.other.api.domain.TVip;
+import com.ruoyi.other.api.feignClient.VipClient;
+import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.util.List;
+
+/**
+ * <p>
+ * 服务实现类
+ * </p>
+ *
+ * @author xiaochen
+ * @since 2024-08-07
+ */
+@Service
+public class TSettlementConfirmServiceImpl extends ServiceImpl<TSettlementConfirmMapper, TSettlementConfirm> implements TSettlementConfirmService {
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java
index e3ba3e6..cb41922 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java
@@ -364,7 +364,7 @@
model.setTransaction_id(shoppingOrder.getSerialNumber());
model.setOut_refund_no(shoppingOrderRefund.getRefundCode());
model.setReason("取消订单");
- model.setNotify_url("http://127.0.0.1:9000/order/t-shopping-order/cancelShoppingOrderWxRefund");
+ model.setNotify_url("http://221.182.45.100:9000/order/t-shopping-order/cancelShoppingOrderWxRefund");
WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount();
amount.setRefund(refundAmount.multiply(new BigDecimal(100)).intValue());
amount.setTotal(shoppingOrder.getPaymentAmount().multiply(new BigDecimal(100)).intValue());
diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml
index 4db7a40..af8dd8f 100644
--- a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml
+++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml
@@ -778,5 +778,78 @@
score_range
</select>
-
+ <select id="chargingList" resultType="com.ruoyi.order.api.vo.ChargingOrderListVO">
+ select t1.* from t_charging_order t1
+ where 1=1
+ <if test="null != req.code and req.code!=''">
+ and t1.code LIKE CONCAT('%',#{req.code},'%')
+ </if>
+ <if test="null != req.carIds and req.carIds.size()>0" >
+ and t1.app_user_car_id in
+ <foreach collection="req.carIds" item="item" index="index" separator="," open="(" close=")">
+ #{item}
+ </foreach>
+ </if>
+ <if test="null != req.userIds and req.userIds.size()>0" >
+ and t1.app_user_id in
+ <foreach collection="req.userIds" item="item" index="index" separator="," open="(" close=")">
+ #{item}
+ </foreach>
+ </if>
+ <if test="req.orderType != null ">
+ and t1.order_type = #{req.orderType}
+ </if>
+ <if test="req.status != null ">
+ and t1.status = #{status}
+ </if>
+ <if test="req.status != null ">
+ and t1.status = #{req.status}
+ </if>
+ <if test="req.siteId != null ">
+ and t1.site_id = #{req.siteId}
+ </if>
+ <if test="startTime1 != null and startTime1!=''">
+ and (t1.start_time between #{startTime1} and #{startTime2})
+ </if>
+ <if test="endTime1 != null and endTime1!=''">
+ and (t1.end_time between #{endTime1} and #{endTime2})
+ </if>
+ </select>
+ <select id="chargingList1" resultType="com.ruoyi.order.api.vo.ChargingOrderListVO">
+ select t1.* from t_charging_order t1
+ where 1=1
+ <if test="null != req.code and req.code!=''">
+ and t1.code LIKE CONCAT('%',#{req.code},'%')
+ </if>
+ <if test="null != req.carIds and req.carIds.size()>0" >
+ and t1.app_user_car_id in
+ <foreach collection="req.carIds" item="item" index="index" separator="," open="(" close=")">
+ #{item}
+ </foreach>
+ </if>
+ <if test="null != req.userIds and req.userIds.size()>0" >
+ and t1.app_user_id in
+ <foreach collection="req.userIds" item="item" index="index" separator="," open="(" close=")">
+ #{item}
+ </foreach>
+ </if>
+ <if test="req.orderType != null ">
+ and t1.order_type = #{req.orderType}
+ </if>
+ <if test="req.status != null ">
+ and t1.status = #{status}
+ </if>
+ <if test="req.status != null ">
+ and t1.status = #{req.status}
+ </if>
+ <if test="req.siteId != null ">
+ and t1.site_id = #{req.siteId}
+ </if>
+ <if test="startTime1 != null and startTime1!=''">
+ and (t1.start_time between #{startTime1} and #{startTime2})
+ </if>
+ <if test="endTime1 != null and endTime1!=''">
+ and (t1.end_time between #{endTime1} and #{endTime2})
+ </if>
+ </select>
</mapper>
diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TSettlementConfirmMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TSettlementConfirmMapper.xml
new file mode 100644
index 0000000..00179ec
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TSettlementConfirmMapper.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.order.mapper.TSettlementConfirmMapper">
+ <select id="settlementTotal" resultType="com.ruoyi.order.api.model.TSettlementConfirm">
+ select t1.* from
+ t_settlement_confirm t1
+ where 1=1
+ <if test="time != null and time!='' ">
+ AND DATE_FORMAT(t1.start_time, '%Y-%m') = DATE_FORMAT(#{time}, '%Y-%m')
+ </if>
+ </select>
+ <select id="settlementList" resultType="com.ruoyi.order.api.model.TSettlementConfirm">
+select t1.* from
+ t_settlement_confirm t1
+where 1=1
+ <if test="req.type != null ">
+ and t1.type = #{req.type}
+ </if>
+ <if test="req.partnerId != null ">
+ and t1.partnerId = #{req.partnerId}
+ </if>
+ <if test="req.type == 1 ">
+ <if test="req.startTime != null and req.startTime!=''">
+ and (t1.start_time between #{req.startTime} and #{req.endTime}
+ </if>
+ </if>
+ <if test="req.siteIds != null and req.siteIds.size() > 0">
+ AND t1.site_id IN
+ <foreach collection="req.siteIds" item="siteId" open="(" separator="," close=")">
+ #{siteId}
+ </foreach>
+ </if>
+ <if test="req.type == 2 ">
+ <if test="req.startTime != null and req.startTime!=''">
+ and (t1.end_time between #{req.startTime} and #{req.endTime}
+ </if>
+ </if>
+ </select>
+</mapper>
diff --git a/ruoyi-service/ruoyi-payment/src/main/resources/bootstrap.yml b/ruoyi-service/ruoyi-payment/src/main/resources/bootstrap.yml
index fe9bde5..f72b520 100644
--- a/ruoyi-service/ruoyi-payment/src/main/resources/bootstrap.yml
+++ b/ruoyi-service/ruoyi-payment/src/main/resources/bootstrap.yml
@@ -24,6 +24,7 @@
namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
username: nacos
password: nacos
+ ip: 192.168.110.85
config:
# 配置中心地址
server-addr: 192.168.110.169:8848
diff --git a/ruoyi-service/ruoyi-payment/src/main/resources/cert/apiclient_cert.p12 b/ruoyi-service/ruoyi-payment/src/main/resources/cert/apiclient_cert.p12
new file mode 100644
index 0000000..735b354
--- /dev/null
+++ b/ruoyi-service/ruoyi-payment/src/main/resources/cert/apiclient_cert.p12
Binary files differ
diff --git a/ruoyi-service/ruoyi-payment/src/main/resources/cert/apiclient_cert.pem b/ruoyi-service/ruoyi-payment/src/main/resources/cert/apiclient_cert.pem
new file mode 100644
index 0000000..7420c3f
--- /dev/null
+++ b/ruoyi-service/ruoyi-payment/src/main/resources/cert/apiclient_cert.pem
@@ -0,0 +1,25 @@
+-----BEGIN CERTIFICATE-----
+MIIEKzCCAxOgAwIBAgIUIsATxGnBh2MW3lonXTp5a2bosAMwDQYJKoZIhvcNAQEL
+BQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsT
+FFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3Qg
+Q0EwHhcNMjQwOTAzMDYzNDQxWhcNMjkwOTAyMDYzNDQxWjCBhDETMBEGA1UEAwwK
+MTY4NDU4NDUxNDEbMBkGA1UECgwS5b6u5L+h5ZWG5oi357O757ufMTAwLgYDVQQL
+DCflm5vlt53mmI7mmJ/mlrDog73mupDnp5HmioDmnInpmZDlhazlj7gxCzAJBgNV
+BAYTAkNOMREwDwYDVQQHDAhTaGVuWmhlbjCCASIwDQYJKoZIhvcNAQEBBQADggEP
+ADCCAQoCggEBAOyWeURxCZuskSTY7r6dbxTfu1gRdTd2K2PwZnkFy6LBvYTC3Mrw
+NK76azRC+QcQAcXRMmZPyeIMNDiD0JUeB4IegjFWxusLSgjvTlCMFL1W62B78cBa
+87y7ld8t+P0FIHAUdhe5B5K3VYS7QT89vJ0yiHyAkIZv5QEsH9Tv935MESdD4xVe
+YNQ+2wN4MZgCxfh8B5zPi++TA94lmf0ZZWqLEVhFd2ov2C1XToxtfxdhct0o0OG3
+PJYDpaVyYFDNZpzcz9e2WrSfRJHPB81qWY95LWJslszOfGjV4iYdk4kodIW7xPsD
+2/HIJl6/VJPHT6McT1b5wWig8N0vcmkTdMsCAwEAAaOBuTCBtjAJBgNVHRMEAjAA
+MAsGA1UdDwQEAwID+DCBmwYDVR0fBIGTMIGQMIGNoIGKoIGHhoGEaHR0cDovL2V2
+Y2EuaXRydXMuY29tLmNuL3B1YmxpYy9pdHJ1c2NybD9DQT0xQkQ0MjIwRTUwREJD
+MDRCMDZBRDM5NzU0OTg0NkMwMUMzRThFQkQyJnNnPUhBQ0M0NzFCNjU0MjJFMTJC
+MjdBOUQzM0E4N0FEMUNERjU5MjZFMTQwMzcxMA0GCSqGSIb3DQEBCwUAA4IBAQCR
+URHWNrcvXLHvo+o/+qNPT/DNGuHiwL+zMRUGVjlTYNG7KQuB6jrByuRa99VW4H/f
+6EHvUCn1j85NfyWD3uFD0uhWtnS/kpULVfKDPq27buhozmLndqVK/BgmYk6AW3gP
+m4FV1wIy9p3Rmm6WQWWanoXPYIG0TAk5/iTNH/oE1EAzFFITGZxlk2tgv2cTCQam
+IJpfrhIILHiXyTtCShYd0Y9Ip5oLm0keHQ6YyNOV2M9DO0fXpZT33VykpVr8oTqJ
+zDISrxyDGXV+1dkgoZ1ZqTmojhRt8VYw5LyVC9PLAo2nUnt8XeFcitXa/5wzJA1r
+tEymp0l3CDmY3XwQL9py
+-----END CERTIFICATE-----
diff --git a/ruoyi-service/ruoyi-payment/src/main/resources/cert/apiclient_key.pem b/ruoyi-service/ruoyi-payment/src/main/resources/cert/apiclient_key.pem
new file mode 100644
index 0000000..8cab68d
--- /dev/null
+++ b/ruoyi-service/ruoyi-payment/src/main/resources/cert/apiclient_key.pem
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDslnlEcQmbrJEk
+2O6+nW8U37tYEXU3ditj8GZ5Bcuiwb2EwtzK8DSu+ms0QvkHEAHF0TJmT8niDDQ4
+g9CVHgeCHoIxVsbrC0oI705QjBS9Vutge/HAWvO8u5XfLfj9BSBwFHYXuQeSt1WE
+u0E/PbydMoh8gJCGb+UBLB/U7/d+TBEnQ+MVXmDUPtsDeDGYAsX4fAecz4vvkwPe
+JZn9GWVqixFYRXdqL9gtV06MbX8XYXLdKNDhtzyWA6WlcmBQzWac3M/Xtlq0n0SR
+zwfNalmPeS1ibJbMznxo1eImHZOJKHSFu8T7A9vxyCZev1STx0+jHE9W+cFooPDd
+L3JpE3TLAgMBAAECggEAC80RrXVJ+mboMoNTnVRzBwKF8MWmKCcP0QNbySud1bd+
+QZIKu2Cx8Axzrn6st0p4HCrsLahLNKhRLoR8sgN2cmodKmLetziv77QoHuJt4mfk
+g8KK84JV6BMfTauYYN6RmKWcomBLXWkhreY9Qe9NajXsEvHCw8HvFVjjGZcCrFz8
+bG3ULntgqu0UOK/Vue75uzo/6K1ltp7Zjo20OwwYkUef51X+lPtRdoYsny3hw/NR
+KzqGr5wjCd+bA2B3oUDpwxotyDuk2JCbdKtqsmabzbLyl+04MkAx3O7XCN+RGeeK
+G1H1/YMl+Ddim/1dyBOo4eVAosPEj4sP4Tfzqv8xcQKBgQD44hyEBc71yHDnwmLA
+CVgmKmvMa2IR1TmvCo2k+6Dc/KvygaNKZVbcWMeYylAKJmCgLvX8HLFMyNoKGeCf
+UTNotx+zQVjizf7S++dSkKEYTwbybZXqSmvWnNDFGzeHHxUjVHcGU2Dki/Uzt9Dh
+w7wE0HC+5iGBeFS89OfSwBX9wwKBgQDzWls+dXpXNaSDDWTRqd0pTcpx8D+iWoUr
+/qT5QQi8Aclp8TBlU6L+CQ70YTRT/EYKeUivy8WXnzi7BxtswdmASOK1z3/DOFkt
+vwdRK3SVkay0vZC7bhJypkwQ7T/ztZiGJFeD4lv6gGwPcPoOdgedZeKTVkP7FB2T
+CKK1b0kUWQKBgDenYFcJcXk2pEC/EBP/Qu3t6IMitCBmvOpugrQU7Kjd+5lT8e7N
+8Hl/hMqe2v0aDdtkBO+mfuM7ur4tgTQ/FS7iXD1abITzKXuGhvjIjK2B5nzJko98
+qtan5GtfJbCae8CVv7PzayRQQ7mX7ia9/UpaTgvyLCXmgZRrc3eGKqS/AoGBALfw
+FAehxFcmtLJZ7VqMih4uLlbwwSh2QzJ9xzSfc3qn3xW0uF/eV9SsBCGzV1oj1M0V
+31sBKtjwAHFdbd1GqJ/Od430yR1F+iIZwe4YaoajFWeH4V3KVSdTiytAKJaNLDw4
+O+3zqpItf4AsZNWJYTgXSqsTCU8+ZRw96r4434QBAoGAODEiTnmiMwwiZR12h61o
+HMeUi+w7loQkmN6SEmEg0zppvYWOV2LXK9lg/OkGDoSLokUdod/dA60JIG8LEfLM
+sGFK/5K+qkTqOPQKlhE7nerqhF4S95lsXy3r2OKv4Cc7mvN8pTZTOIYbEXGrNOvZ
+MO5cc2vaWSI6Xm4HoqBe12o=
+-----END PRIVATE KEY-----
diff --git "a/ruoyi-service/ruoyi-payment/src/main/resources/cert/\350\257\201\344\271\246\344\275\277\347\224\250\350\257\264\346\230\216.txt" "b/ruoyi-service/ruoyi-payment/src/main/resources/cert/\350\257\201\344\271\246\344\275\277\347\224\250\350\257\264\346\230\216.txt"
new file mode 100644
index 0000000..9a0aab1
--- /dev/null
+++ "b/ruoyi-service/ruoyi-payment/src/main/resources/cert/\350\257\201\344\271\246\344\275\277\347\224\250\350\257\264\346\230\216.txt"
@@ -0,0 +1,18 @@
+欢迎使用微信支付!
+附件中的三份文件(证书pkcs12格式、证书pem格式、证书密钥pem格式),为接口中强制要求时需携带的证书文件。
+证书属于敏感信息,请妥善保管不要泄露和被他人复制。
+不同开发语言下的证书格式不同,以下为说明指引:
+ 证书pkcs12格式(apiclient_cert.p12)
+ 包含了私钥信息的证书文件,为p12(pfx)格式,由微信支付签发给您用来标识和界定您的身份
+ 部分安全性要求较高的API需要使用该证书来确认您的调用身份
+ windows上可以直接双击导入系统,导入过程中会提示输入证书密码,证书密码默认为您的商户号(如:1900006031)
+ 证书pem格式(apiclient_cert.pem)
+ 从apiclient_cert.p12中导出证书部分的文件,为pem格式,请妥善保管不要泄漏和被他人复制
+ 部分开发语言和环境,不能直接使用p12文件,而需要使用pem,所以为了方便您使用,已为您直接提供
+ 您也可以使用openssl命令来自己导出:openssl pkcs12 -clcerts -nokeys -in apiclient_cert.p12 -out apiclient_cert.pem
+ 证书密钥pem格式(apiclient_key.pem)
+ 从apiclient_cert.p12中导出密钥部分的文件,为pem格式
+ 部分开发语言和环境,不能直接使用p12文件,而需要使用pem,所以为了方便您使用,已为您直接提供
+ 您也可以使用openssl命令来自己导出:openssl pkcs12 -nocerts -in apiclient_cert.p12 -out apiclient_key.pem
+备注说明:
+ 由于绝大部分操作系统已内置了微信支付服务器证书的根CA证书, 2018年3月6日后, 不再提供CA证书文件(rootca.pem)下载
\ No newline at end of file
--
Gitblit v1.7.1