ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/BmsDemandAndChargerExportationFallbackFactory.java
File was deleted ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/ChargingHandshakeFallbackFactory.java
File was deleted ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/IntegrationFallbackFactory.java
@@ -24,106 +24,6 @@ return new IntegrationClient() { @Override public R<String> onlineReply(OnlineReply onlineReply) { return R.fail("登录认证应答调用失败:" + throwable.getMessage()); } @Override public R<String> pong(Pong pong) { return R.fail("心跳包应答调用失败:" + throwable.getMessage()); } @Override public R<String> billingModeVerifyReply(BillingModeVerifyReply billingModeVerifyReply) { return R.fail("计费模型验证请求应答调用失败:" + throwable.getMessage()); } @Override public R<String> acquisitionBillingModeReply(AcquisitionBillingModeReply acquisitionBillingModeReply) { return R.fail("计费模型验证请求应答调用失败:" + throwable.getMessage()); } @Override public R<String> readRealTimeMonitoringData(ReadRealTimeMonitoringData readRealTimeMonitoringData) { return R.fail("读取实时监测数据调用失败:" + throwable.getMessage()); } // @Override // public R<String> endCharge(EndCharge endCharge) { // return R.fail("充电结束调用失败:" + throwable.getMessage()); // } @Override public R<String> platformConfirmationCharging(PlatformConfirmationCharging platformConfirmationCharging) { return R.fail("运营平台确认启动充电调用失败:" + throwable.getMessage()); } @Override public R<String> platformStartCharging(PlatformStartCharging platformStartCharging) { return R.fail("运营平台远程控制启机调用失败:" + throwable.getMessage()); } @Override public R<String> platformStopCharging(PlatformStopCharging platformStopCharging) { return R.fail("运营平台远程停机调用失败:" + throwable.getMessage()); } @Override public R<String> confirmTransactionRecord(ConfirmTransactionRecord confirmTransactionRecord) { return R.fail("交易记录确认调用失败:" + throwable.getMessage()); } @Override public R<String> updateBalance(UpdateBalance updateBalance) { return R.fail("远程账户余额更新调用失败:" + throwable.getMessage()); } @Override public R<String> synchronizeOfflineCard(SynchronizeOfflineCard synchronizeOfflineCard) { return R.fail("离线卡数据同步调用失败:" + throwable.getMessage()); } @Override public R<String> clearOfflineCard(ClearOfflineCard clearOfflineCard) { return R.fail("离线卡数据清除调用失败:" + throwable.getMessage()); } @Override public R<String> queryOfflineCard(QueryOfflineCard queryOfflineCard) { return R.fail("离线卡数据查询调用失败:" + throwable.getMessage()); } @Override public R<String> workingParameterSetting(WorkingParameterSetting workingParameterSetting) { return R.fail("充电桩工作参数设置调用失败:" + throwable.getMessage()); } @Override public R<String> timingSetting(TimingSetting timingSetting) { return R.fail("对时设置调用失败:" + throwable.getMessage()); } @Override public R<String> setupBillingModel(SetupBillingModel setupBillingModel) { return R.fail("计费模型设置调用失败:" + throwable.getMessage()); } @Override public R<String> openOrCloseGroundLock(OpenOrCloseGroundLock openOrCloseGroundLock) { return R.fail("遥控地锁升锁与降锁命令 (下行)调用失败:" + throwable.getMessage()); } @Override public R<String> platformRestart(PlatformRestart platformRestart) { return R.fail("远程重启调用失败:" + throwable.getMessage()); } @Override public R<String> platformRemoteUpdate(PlatformRemoteUpdate platformRemoteUpdate) { return R.fail("远程更新调用失败:" + throwable.getMessage()); } @Override public R<String> setupBillingModel1(String deviceId, String json) { return R.fail("远程更新硬件:" + throwable.getMessage()); } ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/SendMessageFallbackFactory.java
@@ -1,9 +1,6 @@ package com.ruoyi.integration.api.factory; import com.ruoyi.common.core.domain.R; import com.ruoyi.integration.api.feignClient.ChargingHandshakeClient; import com.ruoyi.integration.api.feignClient.SendMessageClient; import com.ruoyi.integration.api.model.ChargingHandshake; import com.ruoyi.integration.api.model.PlatformStartCharging; import com.ruoyi.integration.api.model.PlatformStopCharging; import com.ruoyi.integration.api.model.QrCodeDelivery; ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/BmsDemandAndChargerExportationClient.java
File was deleted ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/ChargingHandshakeClient.java
File was deleted ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/IntegrationClient.java
Diff too large ruoyi-api/ruoyi-api-integration/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -1,12 +1,10 @@ com.ruoyi.integration.api.factory.IntegrationFallbackFactory com.ruoyi.integration.api.factory.UploadRealTimeMonitoringDataFallbackFactory com.ruoyi.integration.api.factory.ChargingHandshakeFallbackFactory com.ruoyi.integration.api.factory.SendMessageFallbackFactory com.ruoyi.integration.api.factory.PlatformStartChargingReplyFallbackFactory com.ruoyi.integration.api.factory.PlatformStopChargingReplyFallbackFactory com.ruoyi.integration.api.factory.SwitchwayGateFallbackFactory com.ruoyi.integration.api.factory.IotInterfaceFallbackFactory com.ruoyi.integration.api.factory.SecurityDetectionFallbackFactory com.ruoyi.integration.api.factory.BmsDemandAndChargerExportationFallbackFactory com.ruoyi.integration.api.factory.TCECClientFallbackFactory com.ruoyi.integration.api.factory.TransactionRecordClientFallbackFactory ruoyi-service/ruoyi-chargingPile/pom.xml
@@ -153,6 +153,11 @@ <artifactId>javase</artifactId> <version>3.3.0</version> </dependency> <!--mongodb--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> </dependencies> <build> ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyDetailController.java
@@ -178,7 +178,7 @@ TAccountingStrategy accountingStrategy = accountingStrategyService.getById(site.getAccountingStrategyId()); TAccountingStrategyDetail one = accountingStrategyDetailService.getOne(Wrappers.<TAccountingStrategyDetail>lambdaQuery() .eq(TAccountingStrategyDetail::getAccountingStrategyId, accountingStrategy.getId()) .last(" and DATE_FORMAT(now(), '%H:%i') between start_time and end_time")); .last(" and DATE_FORMAT(now(), '%H:%i') between start_time and (if(end_time = '00:00', '23:59', end_time))")); return R.ok(dto.getStrategyDetailId().equals(one.getId())); } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java
@@ -11,6 +11,7 @@ import com.ruoyi.chargingPile.api.model.Partner; import com.ruoyi.chargingPile.api.model.Site; import com.ruoyi.chargingPile.api.model.TChargingGun; import com.ruoyi.chargingPile.util.mongodb.service.UploadRealTimeMonitoringDataService; import com.ruoyi.common.core.utils.WebUtils; import com.ruoyi.common.core.web.domain.BasePojo; import com.ruoyi.common.core.web.page.PageInfo; @@ -425,7 +426,7 @@ @Resource private OtherClient otherClient; @Resource private UploadRealTimeMonitoringDataClient uploadRealTimeMonitoringDataClient; private UploadRealTimeMonitoringDataService uploadRealTimeMonitoringDataService; @ApiOperation(value = "下载", tags = {"管理后台-结算表记录"}) @PutMapping("/downloadSettlement") @Log(title = "【结算表记录】下载结算表", businessType = BusinessType.EXPORT) @@ -559,7 +560,7 @@ settlementExportVO.setAverageServiceChargeReal(""); settlementExportVO.setAverageServiceCharge(""); // 获取充电时间 UploadRealTimeMonitoringData data5 = uploadRealTimeMonitoringDataClient.chargingOrderInfo(chargingOrder.getCode()).getData(); UploadRealTimeMonitoringData data5 = uploadRealTimeMonitoringDataService.getLastDataById(chargingOrder.getCode()); if (data5!=null){ if (data5.getCumulative_charging_time()!=null){ settlementExportVO.setChargingSecond(data5.getCumulative_charging_time()+""); @@ -568,7 +569,7 @@ } // 获取开始SOC 结束soc if (chargingOrder.getCode()!=null){ List<UploadRealTimeMonitoringData> data6 = uploadRealTimeMonitoringDataClient.getDataByOrderCode(chargingOrder.getCode()).getData(); List<UploadRealTimeMonitoringData> data6 = uploadRealTimeMonitoringDataService.getDataByOrderCode(chargingOrder.getCode()); if (data6!=null && !data6.isEmpty()){ int min = 100; int max = 0; ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java
@@ -19,6 +19,7 @@ import com.ruoyi.chargingPile.dto.GetChargingGunMonitoring; import com.ruoyi.chargingPile.mapper.TChargingPileMapper; import com.ruoyi.chargingPile.service.*; import com.ruoyi.chargingPile.util.mongodb.service.UploadRealTimeMonitoringDataService; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.web.domain.AjaxResult; @@ -96,7 +97,7 @@ private AppUserCarClient appUserCarClient; @Resource private UploadRealTimeMonitoringDataClient uploadRealTimeMonitoringDataClient; private UploadRealTimeMonitoringDataService uploadRealTimeMonitoringDataService; @Resource private SysUserRoleClient sysUserRoleClient; @@ -406,7 +407,7 @@ // 查询正在充电的单子的实时记录 TChargingOrder chargingOrder = chargingOrderClient.getOrderDetailByGunId(chargingGun.getId()).getData(); if(Objects.nonNull(chargingOrder)){ UploadRealTimeMonitoringData uploadRealTimeMonitoringData = uploadRealTimeMonitoringDataClient.chargingOrderInfo(chargingOrder.getCode()).getData(); UploadRealTimeMonitoringData uploadRealTimeMonitoringData = uploadRealTimeMonitoringDataService.getLastDataById(chargingOrder.getCode()); if(null != uploadRealTimeMonitoringData){ chargingGun.setSoc(uploadRealTimeMonitoringData.getSoc()); }else{ @@ -636,7 +637,7 @@ gunMonitoring.setLicensePlate(chargingOrder.getPlateNum()); } UploadRealTimeMonitoringData data = uploadRealTimeMonitoringDataClient.chargingOrderInfo(chargingOrder.getCode()).getData(); UploadRealTimeMonitoringData data = uploadRealTimeMonitoringDataService.getLastDataById(chargingOrder.getCode()); gunMonitoring.setChargingRatio(BigDecimal.valueOf(data.getSoc())); gunMonitoring.setElectricQuantity(data.getCharging_degree().toString()); gunMonitoring.setSoc(data.getSoc().toString()); ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/util/mongodb/base/BaseService.java
New file @@ -0,0 +1,28 @@ package com.ruoyi.chargingPile.util.mongodb.base; import java.util.List; public interface BaseService<T> { /** * 添加 * @param t 实体类 * @return 添加结果 1=成功 0=失败 */ int create(T t); /** * 根据id查询 * @param id 实体id * @return 实体对象 */ T findById(String id); /** * 查询列表 * @return 实体列表 */ List<T> findAll(); } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/util/mongodb/service/BmsDemandAndChargerExportationService.java
New file @@ -0,0 +1,20 @@ package com.ruoyi.chargingPile.util.mongodb.service; import com.ruoyi.chargingPile.util.mongodb.base.BaseService; import com.ruoyi.integration.api.model.BmsDemandAndChargerExportation; import java.util.List; public interface BmsDemandAndChargerExportationService extends BaseService<BmsDemandAndChargerExportation> { /** * 获取bms数据 * @param orderCode * @return */ List<BmsDemandAndChargerExportation> getBmsDemandAndChargerExportation(String orderCode); } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/util/mongodb/service/ChargingHandshakeService.java
New file @@ -0,0 +1,13 @@ package com.ruoyi.chargingPile.util.mongodb.service; import com.ruoyi.chargingPile.util.mongodb.base.BaseService; import com.ruoyi.integration.api.model.ChargingHandshake; public interface ChargingHandshakeService extends BaseService<ChargingHandshake> { ChargingHandshake getDataByOrderCode(String code); } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/util/mongodb/service/PlatformStartChargingReplyService.java
New file @@ -0,0 +1,17 @@ package com.ruoyi.chargingPile.util.mongodb.service; import com.ruoyi.chargingPile.util.mongodb.base.BaseService; import com.ruoyi.integration.api.model.PlatformStartChargingReply; import java.util.List; public interface PlatformStartChargingReplyService extends BaseService<PlatformStartChargingReply> { /** * 根据订单编号查询远程启机应答数据 * @param code * @return */ List<PlatformStartChargingReply> getPlatformStartChargingReply(String code); } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/util/mongodb/service/PlatformStopChargingReplyService.java
New file @@ -0,0 +1,15 @@ package com.ruoyi.chargingPile.util.mongodb.service; import com.ruoyi.chargingPile.util.mongodb.base.BaseService; import com.ruoyi.integration.api.model.PlatformStopChargingReply; import com.ruoyi.integration.api.vo.GetPlatformStopChargingReply; public interface PlatformStopChargingReplyService extends BaseService<PlatformStopChargingReply> { /** * 根据枪编号获取停机应答 * @return */ PlatformStopChargingReply getPlatformStopChargingReply(GetPlatformStopChargingReply query); } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/util/mongodb/service/SecurityDetectionService.java
New file @@ -0,0 +1,17 @@ package com.ruoyi.chargingPile.util.mongodb.service; import com.ruoyi.chargingPile.util.mongodb.base.BaseService; import com.ruoyi.integration.api.model.SecurityDetection; /** */ public interface SecurityDetectionService extends BaseService<SecurityDetection> { /** * 根据业务流水号查询数据 * @param transactionSerialNumber * @return */ SecurityDetection getSecurityDetection(String transactionSerialNumber); } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/util/mongodb/service/TransactionRecordService.java
New file @@ -0,0 +1,14 @@ package com.ruoyi.chargingPile.util.mongodb.service; import com.ruoyi.chargingPile.util.mongodb.base.BaseService; import com.ruoyi.integration.api.model.TransactionRecord; public interface TransactionRecordService extends BaseService<TransactionRecord> { /** * 根据订单流水号查询数据 * @param code * @return */ TransactionRecord findOne(String code); } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/util/mongodb/service/UploadRealTimeMonitoringDataService.java
New file @@ -0,0 +1,31 @@ package com.ruoyi.chargingPile.util.mongodb.service; import com.ruoyi.chargingPile.util.mongodb.base.BaseService; import com.ruoyi.common.core.dto.MongoChargingOrderQuery; import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData; import com.ruoyi.integration.api.model.UploadRealTimeMonitoringPageData; import java.text.ParseException; import java.util.List; public interface UploadRealTimeMonitoringDataService extends BaseService<UploadRealTimeMonitoringData> { /** * 根据订单号查询监控数据 * @param code * @return */ List<UploadRealTimeMonitoringData> getDataByOrderCode(String code); UploadRealTimeMonitoringPageData getDataAll(MongoChargingOrderQuery mongoChargingOrderQuery) throws ParseException; /** * 查询订单最新一条数据 * @param transaction_serial_number * @return */ UploadRealTimeMonitoringData getLastDataById(String transaction_serial_number); void delete(String id); void updateById(String id); } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/util/mongodb/service/impl/BmsDemandAndChargerExportationServiceImpl.java
New file @@ -0,0 +1,48 @@ package com.ruoyi.chargingPile.util.mongodb.service.impl; import com.ruoyi.chargingPile.util.mongodb.service.BmsDemandAndChargerExportationService; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.integration.api.model.BmsDemandAndChargerExportation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Sort; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Service; import java.util.List; @Service public class BmsDemandAndChargerExportationServiceImpl implements BmsDemandAndChargerExportationService { @Autowired private MongoTemplate mongoTemplate; @Override public int create(BmsDemandAndChargerExportation bmsDemandAndChargerExportation) { mongoTemplate.save(bmsDemandAndChargerExportation); return 1; } @Override public BmsDemandAndChargerExportation findById(String id) { return mongoTemplate.findById(id, BmsDemandAndChargerExportation.class); } @Override public List<BmsDemandAndChargerExportation> findAll() { return mongoTemplate.findAll(BmsDemandAndChargerExportation.class); } @Override public List<BmsDemandAndChargerExportation> getBmsDemandAndChargerExportation(String orderCode) { Query query = new Query(); if(StringUtils.isNotEmpty(orderCode)){ query.addCriteria(Criteria.where("transaction_serial_number").is(orderCode)); } List<BmsDemandAndChargerExportation> uploadRealTimeMonitoringData = mongoTemplate.find( query.with(Sort.by(Sort.Order.desc("create_time"))) , BmsDemandAndChargerExportation.class); return uploadRealTimeMonitoringData; } } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/util/mongodb/service/impl/ChargingHandshakeServiceImpl.java
New file @@ -0,0 +1,39 @@ package com.ruoyi.chargingPile.util.mongodb.service.impl; import com.ruoyi.chargingPile.util.mongodb.service.ChargingHandshakeService; import com.ruoyi.integration.api.model.ChargingHandshake; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Service; import java.util.List; @Service public class ChargingHandshakeServiceImpl implements ChargingHandshakeService { @Autowired private MongoTemplate mongoTemplate; @Override public int create(ChargingHandshake chargingHandshake) { mongoTemplate.save(chargingHandshake); return 1; } @Override public ChargingHandshake findById(String id) { return mongoTemplate.findById(id, ChargingHandshake.class); } @Override public List<ChargingHandshake> findAll() { return mongoTemplate.findAll(ChargingHandshake.class); } @Override public ChargingHandshake getDataByOrderCode(String code) { List<ChargingHandshake> charging_gun_code = mongoTemplate.find(new Query().addCriteria(Criteria.where("transaction_serial_number").is(code)), ChargingHandshake.class); return charging_gun_code.size() > 0 ? charging_gun_code.get(0) : null; } } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/util/mongodb/service/impl/PlatformStartChargingReplyServiceImpl.java
New file @@ -0,0 +1,47 @@ package com.ruoyi.chargingPile.util.mongodb.service.impl; import com.ruoyi.chargingPile.util.mongodb.service.PlatformStartChargingReplyService; import com.ruoyi.integration.api.model.PlatformStartChargingReply; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Service; import java.util.List; @Service public class PlatformStartChargingReplyServiceImpl implements PlatformStartChargingReplyService { @Autowired private MongoTemplate mongoTemplate; @Override public int create(PlatformStartChargingReply platformStartChargingReply) { mongoTemplate.save(platformStartChargingReply); return 1; } @Override public PlatformStartChargingReply findById(String id) { return mongoTemplate.findById(id, PlatformStartChargingReply.class); } @Override public List<PlatformStartChargingReply> findAll() { return mongoTemplate.findAll(PlatformStartChargingReply.class); } /** * 根据订单编号查询远程启机应答数据 * @param code * @return */ @Override public List<PlatformStartChargingReply> getPlatformStartChargingReply(String code) { Query query = new Query(); query.addCriteria(Criteria.where("transaction_serial_number").is(code)); List<PlatformStartChargingReply> platformStartChargingReplies = mongoTemplate.find(query, PlatformStartChargingReply.class); return platformStartChargingReplies; } } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/util/mongodb/service/impl/PlatformStopChargingReplyServiceImpl.java
New file @@ -0,0 +1,48 @@ package com.ruoyi.chargingPile.util.mongodb.service.impl; import com.ruoyi.chargingPile.util.mongodb.service.PlatformStopChargingReplyService; import com.ruoyi.integration.api.model.PlatformStopChargingReply; import com.ruoyi.integration.api.vo.GetPlatformStopChargingReply; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Service; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; @Service public class PlatformStopChargingReplyServiceImpl implements PlatformStopChargingReplyService { @Autowired private MongoTemplate mongoTemplate; @Override public int create(PlatformStopChargingReply platformStopChargingReply) { mongoTemplate.save(platformStopChargingReply); return 1; } @Override public PlatformStopChargingReply findById(String id) { return mongoTemplate.findById(id, PlatformStopChargingReply.class); } @Override public List<PlatformStopChargingReply> findAll() { return mongoTemplate.findAll(PlatformStopChargingReply.class); } /** * 根据枪编号获取 * @return */ @Override public PlatformStopChargingReply getPlatformStopChargingReply(GetPlatformStopChargingReply query) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); List<PlatformStopChargingReply> platformStopChargingReplies = mongoTemplate.find(new Query().addCriteria(Criteria.where("charging_pile_code").is(query.getCharging_pile_code()) .and("charging_gun_code").is(query.getCharging_gun_code()).and("create_time").lte(sdf.format(new Date())).gte(query.getEnd_time())), PlatformStopChargingReply.class); return platformStopChargingReplies.size() > 0 ? platformStopChargingReplies.get(0) : null; } } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/util/mongodb/service/impl/SecurityDetectionServiceImpl.java
New file @@ -0,0 +1,49 @@ package com.ruoyi.chargingPile.util.mongodb.service.impl; import com.ruoyi.chargingPile.util.mongodb.service.SecurityDetectionService; import com.ruoyi.integration.api.model.SecurityDetection; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Service; import java.util.List; /** * 心跳包应答实现类 **/ @Service public class SecurityDetectionServiceImpl implements SecurityDetectionService { @Autowired private MongoTemplate mongoTemplate; @Override public int create(SecurityDetection securityDetection) { mongoTemplate.save(securityDetection); return 1; } @Override public SecurityDetection findById(String id) { return mongoTemplate.findById(id, SecurityDetection.class); } @Override public List<SecurityDetection> findAll() { return mongoTemplate.findAll(SecurityDetection.class); } /** * 根据业务流水号查询数据 * @param transactionSerialNumber * @return */ @Override public SecurityDetection getSecurityDetection(String transactionSerialNumber) { List<SecurityDetection> securityDetectionList = mongoTemplate.find(new Query().addCriteria(Criteria.where("transaction_serial_number") .is(transactionSerialNumber)), SecurityDetection.class); return securityDetectionList.size() > 0 ? securityDetectionList.get(0) : null; } } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/util/mongodb/service/impl/TransactionRecordServiceImpl.java
New file @@ -0,0 +1,51 @@ package com.ruoyi.chargingPile.util.mongodb.service.impl; import com.ruoyi.chargingPile.util.mongodb.service.TransactionRecordService; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.integration.api.model.TransactionRecord; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Sort; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Service; import java.util.List; @Service public class TransactionRecordServiceImpl implements TransactionRecordService { @Autowired private MongoTemplate mongoTemplate; @Override public int create(TransactionRecord transactionRecord) { mongoTemplate.save(transactionRecord); return 1; } @Override public TransactionRecord findById(String id) { return mongoTemplate.findById(id, TransactionRecord.class); } @Override public List<TransactionRecord> findAll() { return mongoTemplate.findAll(TransactionRecord.class); } /** * 根据订单流水号查询数据 * @param code * @return */ @Override public TransactionRecord findOne(String code) { Query query = new Query(); if(StringUtils.isNotEmpty(code)){ query.addCriteria(Criteria.where("transaction_serial_number").is(code)); } List<TransactionRecord> transactionRecords = mongoTemplate.find( query.with(Sort.by(Sort.Order.desc("create_time"))) , TransactionRecord.class); return transactionRecords.size() > 0 ? transactionRecords.get(0) : null; } } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/util/mongodb/service/impl/UploadRealTimeMonitoringDataServiceImpl.java
New file @@ -0,0 +1,174 @@ package com.ruoyi.chargingPile.util.mongodb.service.impl; import com.ruoyi.chargingPile.util.mongodb.service.UploadRealTimeMonitoringDataService; import com.ruoyi.common.core.dto.MongoChargingOrderQuery; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData; import com.ruoyi.integration.api.model.UploadRealTimeMonitoringPageData; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Update; import org.springframework.stereotype.Service; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; @Service public class UploadRealTimeMonitoringDataServiceImpl implements UploadRealTimeMonitoringDataService { @Autowired private MongoTemplate mongoTemplate; @Override public int create(UploadRealTimeMonitoringData uploadRealTimeMonitoringData) { mongoTemplate.save(uploadRealTimeMonitoringData); return 1; } @Override public UploadRealTimeMonitoringData findById(String id) { return mongoTemplate.findById(id, UploadRealTimeMonitoringData.class); } @Override public List<UploadRealTimeMonitoringData> findAll() { return mongoTemplate.findAll(UploadRealTimeMonitoringData.class); } /** * 根据订单号查询监控数据 * @param code * @return */ @Override public List<UploadRealTimeMonitoringData> getDataByOrderCode(String code) { Query query = new Query(); if(StringUtils.isNotEmpty(code)){ query.addCriteria(Criteria.where("transaction_serial_number").is(code)); } List<UploadRealTimeMonitoringData> uploadRealTimeMonitoringData = mongoTemplate.find( query.with(Sort.by(Sort.Order.desc("create_time"))) , UploadRealTimeMonitoringData.class); return uploadRealTimeMonitoringData; } @Override public UploadRealTimeMonitoringPageData getDataAll(MongoChargingOrderQuery mongoChargingOrderQuery) throws ParseException { Query query = new Query(); // if (!values.isEmpty()){ // query.addCriteria(Criteria.where("transaction_serial_number").in(values)); // } if (mongoChargingOrderQuery.getCode() != null && !mongoChargingOrderQuery.getCode().isEmpty()) { query.addCriteria(Criteria.where("transaction_serial_number").regex(mongoChargingOrderQuery.getCode(),"i")); // "i" 表示不区分大小写 } if (mongoChargingOrderQuery.getOrderType() !=null){ query.addCriteria(Criteria.where("orderType").is(mongoChargingOrderQuery.getOrderType())); } if (mongoChargingOrderQuery.getSiteId() != null){ query.addCriteria(Criteria.where("siteId").is(mongoChargingOrderQuery.getSiteId())); } if (!mongoChargingOrderQuery.getSiteIds().isEmpty()){ query.addCriteria(Criteria.where("siteId").in(mongoChargingOrderQuery.getSiteIds())); } if (mongoChargingOrderQuery.getChargingPileCode() != null && !mongoChargingOrderQuery.getChargingPileCode().isEmpty()) { query.addCriteria(Criteria.where("charging_pile_code").is(mongoChargingOrderQuery.getChargingPileCode())); } if (mongoChargingOrderQuery.getChargingGunCode() != null && !mongoChargingOrderQuery.getChargingGunCode().isEmpty()){ query.addCriteria(Criteria.where("charging_gun_code").is(mongoChargingOrderQuery.getChargingGunCode())); } if (mongoChargingOrderQuery.getStatus() != null){ query.addCriteria(Criteria.where("status").is(mongoChargingOrderQuery.getStatus())); } if (mongoChargingOrderQuery.getCreateTime() != null) { String[] split = mongoChargingOrderQuery.getCreateTime().split(" - "); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date start = dateFormat.parse(split[0]); Date end = dateFormat.parse(split[1]); query.addCriteria(Criteria.where("create_time").gte(start).lt(end)); } if (mongoChargingOrderQuery.getLastTime() != null && mongoChargingOrderQuery.getLastTime() != null) { String[] split = mongoChargingOrderQuery.getLastTime().split(" - "); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date start = dateFormat.parse(split[0]); Date end = dateFormat.parse(split[1]); query.addCriteria(Criteria.where("last_time").gte(start).lt(end)); } long totalElements = mongoTemplate.count(query, UploadRealTimeMonitoringData.class); // 创建带有排序的 Pageable 对象 Pageable pageable = PageRequest.of( mongoChargingOrderQuery.getPageCurr()-1, mongoChargingOrderQuery.getPageSize(), Sort.by(Sort.Direction.DESC, "create_time") ); // 设置分页和排序 query.with(pageable); // 执行查询并获取 Page 对象 List<UploadRealTimeMonitoringData> page = mongoTemplate.find(query, UploadRealTimeMonitoringData.class,"upload_real_time_monitoring_data"); // 设置分页 // Pageable pageable = PageRequest.of(mongoChargingOrderQuery.getPageSize()*(mongoChargingOrderQuery.getPageCurr()-1), mongoChargingOrderQuery.getPageSize()); // query.with(pageable); // query.with(Sort.by(Sort.Direction.DESC,"create_time")); List<UploadRealTimeMonitoringData> uploadRealTimeMonitoringData = mongoTemplate.find( query , UploadRealTimeMonitoringData.class); UploadRealTimeMonitoringPageData uploadRealTimeMonitoringPageData = new UploadRealTimeMonitoringPageData(); uploadRealTimeMonitoringPageData.setCount(totalElements); uploadRealTimeMonitoringPageData.setRecords(page); return uploadRealTimeMonitoringPageData; } @Override public UploadRealTimeMonitoringData getLastDataById(String transaction_serial_number) { Query query = new Query(); if (StringUtils.isNotEmpty(transaction_serial_number)){ query.addCriteria(Criteria.where("transaction_serial_number").is(transaction_serial_number)); } // 按照 createdAt 字段降序排序 query.with(Sort.by(Sort.Direction.DESC, "create_time")); // 限制结果只返回一条记录 query.limit(1); return mongoTemplate.findOne(query, UploadRealTimeMonitoringData.class); } @Override public void delete(String id) { UploadRealTimeMonitoringData byId = findById(id.toString()); mongoTemplate.remove(byId); } @Override public void updateById(String id) { // 创建查询条件 Query query = new Query(Criteria.where("_id").is(id)); // 创建更新对象 Update update = new Update().set("last_time", new Date()); // 执行更新操作 mongoTemplate.updateFirst(query, update, UploadRealTimeMonitoringData.class); } } ruoyi-service/ruoyi-integration/pom.xml
@@ -115,32 +115,6 @@ <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--rocketmq--> <!-- <dependency>--> <!-- <groupId>com.alibaba.cloud</groupId>--> <!-- <artifactId>spring-cloud-starter-stream-rocketmq</artifactId>--> <!-- <version>2.2.2.RELEASE</version>--> <!-- <exclusions>--> <!-- <exclusion>--> <!-- <groupId>org.apache.rocketmq</groupId>--> <!-- <artifactId>rocketmq-client</artifactId>--> <!-- </exclusion>--> <!-- <exclusion>--> <!-- <groupId>org.apache.rocketmq</groupId>--> <!-- <artifactId>rocketmq-acl</artifactId>--> <!-- </exclusion>--> <!-- </exclusions>--> <!-- </dependency>--> <!-- <dependency>--> <!-- <groupId>org.apache.rocketmq</groupId>--> <!-- <artifactId>rocketmq-client</artifactId>--> <!-- <version>4.7.1</version>--> <!-- </dependency>--> <!-- <dependency>--> <!-- <groupId>org.apache.rocketmq</groupId>--> <!-- <artifactId>rocketmq-acl</artifactId>--> <!-- <version>4.7.1</version>--> <!-- </dependency>--> <dependency> <groupId>org.apache.rocketmq</groupId> ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/UploadRealTimeMonitoringDataController.java
@@ -32,13 +32,9 @@ * @return */ @PostMapping(value = "/getOrderInfoByCode") public R<UploadRealTimeMonitoringData> chargingOrderInfo(@RequestParam("orderId") String orderId){ List<UploadRealTimeMonitoringData> dataByOrderCode = uploadRealTimeMonitoringDataService.getDataByOrderCode(orderId); if(dataByOrderCode.size() > 0){ UploadRealTimeMonitoringData uploadRealTimeMonitoringData = dataByOrderCode.get(0); return R.ok(uploadRealTimeMonitoringData); } return R.ok(); public R<UploadRealTimeMonitoringData> getOrderInfoByCode(@RequestParam("orderId") String orderId){ UploadRealTimeMonitoringData dataByOrderCode = uploadRealTimeMonitoringDataService.getLastDataById(orderId); return R.ok(dataByOrderCode); } /** ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java
@@ -84,7 +84,7 @@ if(!"}".equals(substring)){ content1 = content1.substring(0, content1.length() - 1) + "}"; } System.out.println("content1:"+content1); log.info("content1:"+content1); content = JSON.parseObject(content1); } JSONObject header = jsonObject.getJSONObject("notify_data").getJSONObject("header"); ruoyi-service/ruoyi-order/pom.xml
@@ -150,7 +150,11 @@ <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--mongodb--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> <dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-spring-boot-starter</artifactId> @@ -162,7 +166,6 @@ </exclusion> </exclusions> </dependency> </dependencies> <build> ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
@@ -57,6 +57,7 @@ import com.ruoyi.order.dto.*; import com.ruoyi.order.service.*; import com.ruoyi.order.util.PreviousSixMonths; import com.ruoyi.order.util.mongodb.service.UploadRealTimeMonitoringDataService; import com.ruoyi.order.vo.EndOfChargePageInfo; import com.ruoyi.order.vo.WatchChargingOrderVo; import com.ruoyi.other.api.feignClient.RoleSiteClient; @@ -148,7 +149,7 @@ @Resource private TOrderInvoiceService invoiceService; @Resource private UploadRealTimeMonitoringDataClient uploadRealTimeMonitoringDataClient; private UploadRealTimeMonitoringDataService uploadRealTimeMonitoringDataService; @Resource private PartnerClient partnerClient; @Resource @@ -1243,7 +1244,7 @@ @GetMapping(value = "/watch/deletes") @ApiOperation(value = "监控订单-删除", tags = {"管理后台-订单管理"}) public R watchChargingOrder(@RequestParam String id) { uploadRealTimeMonitoringDataClient.delete(id); uploadRealTimeMonitoringDataService.delete(id); return R.ok(); } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -21,7 +21,6 @@ import com.ruoyi.common.redis.service.RedisService; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.integration.api.feignClient.ChargingHandshakeClient; import com.ruoyi.integration.api.feignClient.PlatformStartChargingReplyClient; import com.ruoyi.integration.api.feignClient.SendMessageClient; import com.ruoyi.integration.api.feignClient.UploadRealTimeMonitoringDataClient; @@ -50,6 +49,9 @@ import com.ruoyi.order.service.TChargingOrderService; import com.ruoyi.order.service.TOrderEvaluateService; import com.ruoyi.order.service.*; import com.ruoyi.order.util.mongodb.service.PlatformStartChargingReplyService; import com.ruoyi.order.util.mongodb.service.TransactionRecordService; import com.ruoyi.order.util.mongodb.service.UploadRealTimeMonitoringDataService; import com.ruoyi.order.vo.EndOfChargePageInfo; import com.ruoyi.other.api.domain.*; import com.ruoyi.order.vo.ChargingOrderListInfoVO; @@ -140,7 +142,7 @@ private RedisService redisService; @Resource private UploadRealTimeMonitoringDataClient uploadRealTimeMonitoringDataClient; private UploadRealTimeMonitoringDataService uploadRealTimeMonitoringDataService; @Resource private TCECClient tcecClient; @@ -161,7 +163,7 @@ private AccountingStrategyClient accountingStrategyClient; @Resource private PlatformStartChargingReplyClient platformStartChargingReplyClient; private PlatformStartChargingReplyService platformStartChargingReplyService; @Resource private TChargingOrderRefundService chargingOrderRefundService; @@ -196,9 +198,6 @@ @Resource private SecurityDetectionClient securityDetectionClient; @Resource private BmsDemandAndChargerExportationClient bmsDemandAndChargerExportationClient; //计数器 private Map<String, Integer> counter_map = new HashMap<>(); @@ -209,7 +208,7 @@ private OperatorClient operatorClient; @Resource private TransactionRecordClient transactionRecordClient; private TransactionRecordService transactionRecordService; @Resource private ITChargingOrderSummaryDataService chargingOrderSummaryDataService; @@ -286,8 +285,12 @@ }else{ myChargingOrderInfo.setLicensePlate(chargingOrder.getPlateNum()); } if(null != chargingOrder.getStartTime()){ myChargingOrderInfo.setStartTime(chargingOrder.getStartTime().atZone(ZoneId.systemDefault()).toInstant().getEpochSecond() * 1000); } if(null != chargingOrder.getEndTime()){ myChargingOrderInfo.setEndTime(chargingOrder.getEndTime().atZone(ZoneId.systemDefault()).toInstant().getEpochSecond() * 1000); } myChargingOrderInfo.setOrderAmount(chargingOrder.getOrderAmount()); myChargingOrderInfo.setPaymentAmount(chargingOrder.getPaymentAmount()); myChargingOrderInfo.setRechargeAmount(chargingOrder.getRechargeAmount()); @@ -299,7 +302,7 @@ .orderByAsc(TChargingOrderAccountingStrategy::getStartTime) ); myChargingOrderInfo.setStageCost(stageCost); List<UploadRealTimeMonitoringData> dataList = uploadRealTimeMonitoringDataClient.getDataByOrderCode(chargingOrder.getCode()).getData(); List<UploadRealTimeMonitoringData> dataList = uploadRealTimeMonitoringDataService.getDataByOrderCode(chargingOrder.getCode()); if(null != dataList){ //在MongoDB中获取数据 SimpleDateFormat sdf = new SimpleDateFormat("HH:mm"); @@ -385,7 +388,6 @@ * @return */ @Override @GlobalTransactional(rollbackFor = Exception.class) public AjaxResult paymentChargingOrder(AddChargingOrder addChargingOrder) { Long userId = tokenService.getLoginUserApplet().getUserId(); TAppUser appUser = appUserClient.getUserById(userId).getData(); @@ -572,7 +574,6 @@ * @return */ @Override @GlobalTransactional(rollbackFor = Exception.class) public AjaxResult chargingOrderCallback(Integer paymentType, String out_trade_no, String transaction_id, String attach) { TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, out_trade_no)); if(chargingOrder.getRechargePaymentStatus() == 2){ @@ -725,7 +726,7 @@ } String code = chargingOrder.getCode(); String key = "AQJC_" + chargingOrder.getChargingGunId(); List<PlatformStartChargingReply> data = platformStartChargingReplyClient.getPlatformStartChargingReply(code).getData(); List<PlatformStartChargingReply> data = platformStartChargingReplyService.getPlatformStartChargingReply(code); log.info(code + ":-------------------开始检查调起充电结果-------------------" + data.toString()); if(data.size() != 0){ PlatformStartChargingReply platformStartChargingReply = data.get(1); @@ -1095,7 +1096,7 @@ chargingDetails.setCode(one.getCode()); chargingDetails.setStatus(one.getStatus()); chargingDetails.setChargingCost(one.getResidualAmount()); UploadRealTimeMonitoringData data = uploadRealTimeMonitoringDataClient.chargingOrderInfo(one.getCode()).getData(); UploadRealTimeMonitoringData data = uploadRealTimeMonitoringDataService.getLastDataById(one.getCode()); if(null != data){ chargingDetails.setChargeCurrent(data.getOutput_current()); chargingDetails.setChargeVoltage(data.getOutput_voltage()); @@ -1124,7 +1125,6 @@ * @return */ @Override @GlobalTransactional(rollbackFor = Exception.class) public AjaxResult stopCharging(String id) { TChargingOrder order = this.getById(id); Integer status = order.getStatus(); @@ -1736,7 +1736,7 @@ } // 获取开始SOC 结束soc if (chargingOrderListVO.getCode()!=null){ List<UploadRealTimeMonitoringData> data6 = uploadRealTimeMonitoringDataClient.getDataByOrderCode(chargingOrderListVO.getCode()).getData(); List<UploadRealTimeMonitoringData> data6 = uploadRealTimeMonitoringDataService.getDataByOrderCode(chargingOrderListVO.getCode()); if (data6!=null && !data6.isEmpty()){ int min = 100; @@ -2045,7 +2045,7 @@ // 获取开始SOC 结束soc if (chargingOrder.getCode()!=null){ List<UploadRealTimeMonitoringData> data6 = uploadRealTimeMonitoringDataClient.getDataByOrderCode(chargingOrder.getCode()).getData(); List<UploadRealTimeMonitoringData> data6 = uploadRealTimeMonitoringDataService.getDataByOrderCode(chargingOrder.getCode()); if (data6!=null){ for (UploadRealTimeMonitoringData uploadRealTimeMonitoringData : data6) { if (uploadRealTimeMonitoringData.getOutput_current()!=null&& @@ -2154,7 +2154,6 @@ * @param orderCode */ @Override @GlobalTransactional(rollbackFor = Exception.class) public void endCharge(String orderCode, Integer endMode) { TChargingOrder order = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, orderCode)); TChargingOrder chargingOrder = new TChargingOrder(); @@ -2179,7 +2178,6 @@ * @param vo */ @Override @GlobalTransactional(rollbackFor = Exception.class) public R endChargeBillingCharge(TransactionRecordMessageVO vo) { TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, vo.getTransaction_serial_number())); if(null == chargingOrder){ @@ -2396,7 +2394,7 @@ TChargingOrder order = new TChargingOrder(); order.setId(chargingOrder.getId()); order.setAppUserId(chargingOrder.getAppUserId()); UploadRealTimeMonitoringData uploadRealTimeMonitoringData = uploadRealTimeMonitoringDataClient.chargingOrderInfo(chargingOrder.getCode()).getData(); UploadRealTimeMonitoringData uploadRealTimeMonitoringData = uploadRealTimeMonitoringDataService.getLastDataById(chargingOrder.getCode()); if(null != uploadRealTimeMonitoringData && null == chargingOrder.getEndMode()){ Integer soc = uploadRealTimeMonitoringData.getSoc(); if(soc >= 98){ @@ -3990,7 +3988,7 @@ .ne(TChargingOrder::getElectricity, 0).in(TChargingOrder::getStatus, Arrays.asList(4, 5))); List<Map<String, Object>> mapList = new ArrayList<>(); for (TChargingOrder order : list) { TransactionRecord transactionRecord = transactionRecordClient.findTransactionRecord(order.getCode()).getData(); TransactionRecord transactionRecord = transactionRecordService.findOne(order.getCode()); Map<String, Object> map = new HashMap<>(); map.put("order", order); map.put("transactionRecord", transactionRecord); ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java
@@ -325,7 +325,6 @@ * @return */ @Override @GlobalTransactional(rollbackFor = Exception.class)//分布式事务 public AjaxResult addOrderEvaluate(OrderEvaluateVo query) { TOrderEvaluate orderEvaluate = this.getOne(new LambdaQueryWrapper<TOrderEvaluate>().eq(TOrderEvaluate::getOrderId, query.getOrderId()) .eq(TOrderEvaluate::getOrderType, query.getOrderType()).eq(TOrderEvaluate::getDelFlag, 0)); ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderInvoiceServiceImpl.java
@@ -95,7 +95,6 @@ * @return */ @Override @GlobalTransactional(rollbackFor = Exception.class) public AjaxResult addOrderInvoice(AddOrderInvoice addOrderInvoice) { Long userId = tokenService.getLoginUserApplet().getUserId(); String orders = addOrderInvoice.getOrders(); ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java
@@ -485,7 +485,6 @@ * @return */ @Override @GlobalTransactional(rollbackFor = Exception.class)//分布式事务 public AjaxResult cancelShoppingOrderWxRefund(String out_refund_no, String refund_id, String refund_status, String success_time) { TShoppingOrderRefund one = shoppingOrderRefundService.getOne(new LambdaQueryWrapper<TShoppingOrderRefund>().eq(TShoppingOrderRefund::getRefundCode, out_refund_no)); one.setRefundStatus(2); ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/mongodb/base/BaseService.java
New file @@ -0,0 +1,28 @@ package com.ruoyi.order.util.mongodb.base; import java.util.List; public interface BaseService<T> { /** * 添加 * @param t 实体类 * @return 添加结果 1=成功 0=失败 */ int create(T t); /** * 根据id查询 * @param id 实体id * @return 实体对象 */ T findById(String id); /** * 查询列表 * @return 实体列表 */ List<T> findAll(); } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/mongodb/service/BmsDemandAndChargerExportationService.java
New file @@ -0,0 +1,20 @@ package com.ruoyi.order.util.mongodb.service; import com.ruoyi.integration.api.model.BmsDemandAndChargerExportation; import com.ruoyi.order.util.mongodb.base.BaseService; import java.util.List; public interface BmsDemandAndChargerExportationService extends BaseService<BmsDemandAndChargerExportation> { /** * 获取bms数据 * @param orderCode * @return */ List<BmsDemandAndChargerExportation> getBmsDemandAndChargerExportation(String orderCode); } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/mongodb/service/ChargingHandshakeService.java
New file @@ -0,0 +1,13 @@ package com.ruoyi.order.util.mongodb.service; import com.ruoyi.integration.api.model.ChargingHandshake; import com.ruoyi.order.util.mongodb.base.BaseService; public interface ChargingHandshakeService extends BaseService<ChargingHandshake> { ChargingHandshake getDataByOrderCode(String code); } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/mongodb/service/PlatformStartChargingReplyService.java
New file @@ -0,0 +1,17 @@ package com.ruoyi.order.util.mongodb.service; import com.ruoyi.integration.api.model.PlatformStartChargingReply; import com.ruoyi.order.util.mongodb.base.BaseService; import java.util.List; public interface PlatformStartChargingReplyService extends BaseService<PlatformStartChargingReply> { /** * 根据订单编号查询远程启机应答数据 * @param code * @return */ List<PlatformStartChargingReply> getPlatformStartChargingReply(String code); } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/mongodb/service/PlatformStopChargingReplyService.java
New file @@ -0,0 +1,15 @@ package com.ruoyi.order.util.mongodb.service; import com.ruoyi.integration.api.model.PlatformStopChargingReply; import com.ruoyi.integration.api.vo.GetPlatformStopChargingReply; import com.ruoyi.order.util.mongodb.base.BaseService; public interface PlatformStopChargingReplyService extends BaseService<PlatformStopChargingReply> { /** * 根据枪编号获取停机应答 * @return */ PlatformStopChargingReply getPlatformStopChargingReply(GetPlatformStopChargingReply query); } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/mongodb/service/SecurityDetectionService.java
New file @@ -0,0 +1,17 @@ package com.ruoyi.order.util.mongodb.service; import com.ruoyi.integration.api.model.SecurityDetection; import com.ruoyi.order.util.mongodb.base.BaseService; /** */ public interface SecurityDetectionService extends BaseService<SecurityDetection> { /** * 根据业务流水号查询数据 * @param transactionSerialNumber * @return */ SecurityDetection getSecurityDetection(String transactionSerialNumber); } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/mongodb/service/TransactionRecordService.java
New file @@ -0,0 +1,14 @@ package com.ruoyi.order.util.mongodb.service; import com.ruoyi.integration.api.model.TransactionRecord; import com.ruoyi.order.util.mongodb.base.BaseService; public interface TransactionRecordService extends BaseService<TransactionRecord> { /** * 根据订单流水号查询数据 * @param code * @return */ TransactionRecord findOne(String code); } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/mongodb/service/UploadRealTimeMonitoringDataService.java
New file @@ -0,0 +1,31 @@ package com.ruoyi.order.util.mongodb.service; import com.ruoyi.common.core.dto.MongoChargingOrderQuery; import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData; import com.ruoyi.integration.api.model.UploadRealTimeMonitoringPageData; import com.ruoyi.order.util.mongodb.base.BaseService; import java.text.ParseException; import java.util.List; public interface UploadRealTimeMonitoringDataService extends BaseService<UploadRealTimeMonitoringData> { /** * 根据订单号查询监控数据 * @param code * @return */ List<UploadRealTimeMonitoringData> getDataByOrderCode(String code); UploadRealTimeMonitoringPageData getDataAll(MongoChargingOrderQuery mongoChargingOrderQuery) throws ParseException; /** * 查询订单最新一条数据 * @param transaction_serial_number * @return */ UploadRealTimeMonitoringData getLastDataById(String transaction_serial_number); void delete(String id); void updateById(String id); } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/mongodb/service/impl/BmsDemandAndChargerExportationServiceImpl.java
New file @@ -0,0 +1,49 @@ package com.ruoyi.order.util.mongodb.service.impl; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.integration.api.model.BmsDemandAndChargerExportation; import com.ruoyi.order.util.mongodb.service.BmsDemandAndChargerExportationService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Sort; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Service; import java.time.LocalDateTime; import java.util.List; @Service public class BmsDemandAndChargerExportationServiceImpl implements BmsDemandAndChargerExportationService { @Autowired private MongoTemplate mongoTemplate; @Override public int create(BmsDemandAndChargerExportation bmsDemandAndChargerExportation) { mongoTemplate.save(bmsDemandAndChargerExportation); return 1; } @Override public BmsDemandAndChargerExportation findById(String id) { return mongoTemplate.findById(id, BmsDemandAndChargerExportation.class); } @Override public List<BmsDemandAndChargerExportation> findAll() { return mongoTemplate.findAll(BmsDemandAndChargerExportation.class); } @Override public List<BmsDemandAndChargerExportation> getBmsDemandAndChargerExportation(String orderCode) { Query query = new Query(); if(StringUtils.isNotEmpty(orderCode)){ query.addCriteria(Criteria.where("transaction_serial_number").is(orderCode)); } List<BmsDemandAndChargerExportation> uploadRealTimeMonitoringData = mongoTemplate.find( query.with(Sort.by(Sort.Order.desc("create_time"))) , BmsDemandAndChargerExportation.class); return uploadRealTimeMonitoringData; } } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/mongodb/service/impl/ChargingHandshakeServiceImpl.java
New file @@ -0,0 +1,39 @@ package com.ruoyi.order.util.mongodb.service.impl; import com.ruoyi.integration.api.model.ChargingHandshake; import com.ruoyi.order.util.mongodb.service.ChargingHandshakeService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Service; import java.util.List; @Service public class ChargingHandshakeServiceImpl implements ChargingHandshakeService { @Autowired private MongoTemplate mongoTemplate; @Override public int create(ChargingHandshake chargingHandshake) { mongoTemplate.save(chargingHandshake); return 1; } @Override public ChargingHandshake findById(String id) { return mongoTemplate.findById(id, ChargingHandshake.class); } @Override public List<ChargingHandshake> findAll() { return mongoTemplate.findAll(ChargingHandshake.class); } @Override public ChargingHandshake getDataByOrderCode(String code) { List<ChargingHandshake> charging_gun_code = mongoTemplate.find(new Query().addCriteria(Criteria.where("transaction_serial_number").is(code)), ChargingHandshake.class); return charging_gun_code.size() > 0 ? charging_gun_code.get(0) : null; } } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/mongodb/service/impl/PlatformStartChargingReplyServiceImpl.java
New file @@ -0,0 +1,47 @@ package com.ruoyi.order.util.mongodb.service.impl; import com.ruoyi.integration.api.model.PlatformStartChargingReply; import com.ruoyi.order.util.mongodb.service.PlatformStartChargingReplyService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Service; import java.util.List; @Service public class PlatformStartChargingReplyServiceImpl implements PlatformStartChargingReplyService { @Autowired private MongoTemplate mongoTemplate; @Override public int create(PlatformStartChargingReply platformStartChargingReply) { mongoTemplate.save(platformStartChargingReply); return 1; } @Override public PlatformStartChargingReply findById(String id) { return mongoTemplate.findById(id, PlatformStartChargingReply.class); } @Override public List<PlatformStartChargingReply> findAll() { return mongoTemplate.findAll(PlatformStartChargingReply.class); } /** * 根据订单编号查询远程启机应答数据 * @param code * @return */ @Override public List<PlatformStartChargingReply> getPlatformStartChargingReply(String code) { Query query = new Query(); query.addCriteria(Criteria.where("transaction_serial_number").is(code)); List<PlatformStartChargingReply> platformStartChargingReplies = mongoTemplate.find(query, PlatformStartChargingReply.class); return platformStartChargingReplies; } } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/mongodb/service/impl/PlatformStopChargingReplyServiceImpl.java
New file @@ -0,0 +1,48 @@ package com.ruoyi.order.util.mongodb.service.impl; import com.ruoyi.integration.api.model.PlatformStopChargingReply; import com.ruoyi.integration.api.vo.GetPlatformStopChargingReply; import com.ruoyi.order.util.mongodb.service.PlatformStopChargingReplyService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Service; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; @Service public class PlatformStopChargingReplyServiceImpl implements PlatformStopChargingReplyService { @Autowired private MongoTemplate mongoTemplate; @Override public int create(PlatformStopChargingReply platformStopChargingReply) { mongoTemplate.save(platformStopChargingReply); return 1; } @Override public PlatformStopChargingReply findById(String id) { return mongoTemplate.findById(id, PlatformStopChargingReply.class); } @Override public List<PlatformStopChargingReply> findAll() { return mongoTemplate.findAll(PlatformStopChargingReply.class); } /** * 根据枪编号获取 * @return */ @Override public PlatformStopChargingReply getPlatformStopChargingReply(GetPlatformStopChargingReply query) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); List<PlatformStopChargingReply> platformStopChargingReplies = mongoTemplate.find(new Query().addCriteria(Criteria.where("charging_pile_code").is(query.getCharging_pile_code()) .and("charging_gun_code").is(query.getCharging_gun_code()).and("create_time").lte(sdf.format(new Date())).gte(query.getEnd_time())), PlatformStopChargingReply.class); return platformStopChargingReplies.size() > 0 ? platformStopChargingReplies.get(0) : null; } } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/mongodb/service/impl/SecurityDetectionServiceImpl.java
New file @@ -0,0 +1,49 @@ package com.ruoyi.order.util.mongodb.service.impl; import com.ruoyi.integration.api.model.SecurityDetection; import com.ruoyi.order.util.mongodb.service.SecurityDetectionService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Service; import java.util.List; /** * 心跳包应答实现类 **/ @Service public class SecurityDetectionServiceImpl implements SecurityDetectionService { @Autowired private MongoTemplate mongoTemplate; @Override public int create(SecurityDetection securityDetection) { mongoTemplate.save(securityDetection); return 1; } @Override public SecurityDetection findById(String id) { return mongoTemplate.findById(id, SecurityDetection.class); } @Override public List<SecurityDetection> findAll() { return mongoTemplate.findAll(SecurityDetection.class); } /** * 根据业务流水号查询数据 * @param transactionSerialNumber * @return */ @Override public SecurityDetection getSecurityDetection(String transactionSerialNumber) { List<SecurityDetection> securityDetectionList = mongoTemplate.find(new Query().addCriteria(Criteria.where("transaction_serial_number") .is(transactionSerialNumber)), SecurityDetection.class); return securityDetectionList.size() > 0 ? securityDetectionList.get(0) : null; } } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/mongodb/service/impl/TransactionRecordServiceImpl.java
New file @@ -0,0 +1,51 @@ package com.ruoyi.order.util.mongodb.service.impl; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.integration.api.model.TransactionRecord; import com.ruoyi.order.util.mongodb.service.TransactionRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Sort; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Service; import java.util.List; @Service public class TransactionRecordServiceImpl implements TransactionRecordService { @Autowired private MongoTemplate mongoTemplate; @Override public int create(TransactionRecord transactionRecord) { mongoTemplate.save(transactionRecord); return 1; } @Override public TransactionRecord findById(String id) { return mongoTemplate.findById(id, TransactionRecord.class); } @Override public List<TransactionRecord> findAll() { return mongoTemplate.findAll(TransactionRecord.class); } /** * 根据订单流水号查询数据 * @param code * @return */ @Override public TransactionRecord findOne(String code) { Query query = new Query(); if(StringUtils.isNotEmpty(code)){ query.addCriteria(Criteria.where("transaction_serial_number").is(code)); } List<TransactionRecord> transactionRecords = mongoTemplate.find( query.with(Sort.by(Sort.Order.desc("create_time"))) , TransactionRecord.class); return transactionRecords.size() > 0 ? transactionRecords.get(0) : null; } } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/mongodb/service/impl/UploadRealTimeMonitoringDataServiceImpl.java
New file @@ -0,0 +1,174 @@ package com.ruoyi.order.util.mongodb.service.impl; import com.ruoyi.common.core.dto.MongoChargingOrderQuery; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData; import com.ruoyi.integration.api.model.UploadRealTimeMonitoringPageData; import com.ruoyi.order.util.mongodb.service.UploadRealTimeMonitoringDataService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Update; import org.springframework.stereotype.Service; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; @Service public class UploadRealTimeMonitoringDataServiceImpl implements UploadRealTimeMonitoringDataService { @Autowired private MongoTemplate mongoTemplate; @Override public int create(UploadRealTimeMonitoringData uploadRealTimeMonitoringData) { mongoTemplate.save(uploadRealTimeMonitoringData); return 1; } @Override public UploadRealTimeMonitoringData findById(String id) { return mongoTemplate.findById(id, UploadRealTimeMonitoringData.class); } @Override public List<UploadRealTimeMonitoringData> findAll() { return mongoTemplate.findAll(UploadRealTimeMonitoringData.class); } /** * 根据订单号查询监控数据 * @param code * @return */ @Override public List<UploadRealTimeMonitoringData> getDataByOrderCode(String code) { Query query = new Query(); if(StringUtils.isNotEmpty(code)){ query.addCriteria(Criteria.where("transaction_serial_number").is(code)); } List<UploadRealTimeMonitoringData> uploadRealTimeMonitoringData = mongoTemplate.find( query.with(Sort.by(Sort.Order.desc("create_time"))) , UploadRealTimeMonitoringData.class); return uploadRealTimeMonitoringData; } @Override public UploadRealTimeMonitoringPageData getDataAll(MongoChargingOrderQuery mongoChargingOrderQuery) throws ParseException { Query query = new Query(); // if (!values.isEmpty()){ // query.addCriteria(Criteria.where("transaction_serial_number").in(values)); // } if (mongoChargingOrderQuery.getCode() != null && !mongoChargingOrderQuery.getCode().isEmpty()) { query.addCriteria(Criteria.where("transaction_serial_number").regex(mongoChargingOrderQuery.getCode(),"i")); // "i" 表示不区分大小写 } if (mongoChargingOrderQuery.getOrderType() !=null){ query.addCriteria(Criteria.where("orderType").is(mongoChargingOrderQuery.getOrderType())); } if (mongoChargingOrderQuery.getSiteId() != null){ query.addCriteria(Criteria.where("siteId").is(mongoChargingOrderQuery.getSiteId())); } if (!mongoChargingOrderQuery.getSiteIds().isEmpty()){ query.addCriteria(Criteria.where("siteId").in(mongoChargingOrderQuery.getSiteIds())); } if (mongoChargingOrderQuery.getChargingPileCode() != null && !mongoChargingOrderQuery.getChargingPileCode().isEmpty()) { query.addCriteria(Criteria.where("charging_pile_code").is(mongoChargingOrderQuery.getChargingPileCode())); } if (mongoChargingOrderQuery.getChargingGunCode() != null && !mongoChargingOrderQuery.getChargingGunCode().isEmpty()){ query.addCriteria(Criteria.where("charging_gun_code").is(mongoChargingOrderQuery.getChargingGunCode())); } if (mongoChargingOrderQuery.getStatus() != null){ query.addCriteria(Criteria.where("status").is(mongoChargingOrderQuery.getStatus())); } if (mongoChargingOrderQuery.getCreateTime() != null) { String[] split = mongoChargingOrderQuery.getCreateTime().split(" - "); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date start = dateFormat.parse(split[0]); Date end = dateFormat.parse(split[1]); query.addCriteria(Criteria.where("create_time").gte(start).lt(end)); } if (mongoChargingOrderQuery.getLastTime() != null && mongoChargingOrderQuery.getLastTime() != null) { String[] split = mongoChargingOrderQuery.getLastTime().split(" - "); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date start = dateFormat.parse(split[0]); Date end = dateFormat.parse(split[1]); query.addCriteria(Criteria.where("last_time").gte(start).lt(end)); } long totalElements = mongoTemplate.count(query, UploadRealTimeMonitoringData.class); // 创建带有排序的 Pageable 对象 Pageable pageable = PageRequest.of( mongoChargingOrderQuery.getPageCurr()-1, mongoChargingOrderQuery.getPageSize(), Sort.by(Sort.Direction.DESC, "create_time") ); // 设置分页和排序 query.with(pageable); // 执行查询并获取 Page 对象 List<UploadRealTimeMonitoringData> page = mongoTemplate.find(query, UploadRealTimeMonitoringData.class,"upload_real_time_monitoring_data"); // 设置分页 // Pageable pageable = PageRequest.of(mongoChargingOrderQuery.getPageSize()*(mongoChargingOrderQuery.getPageCurr()-1), mongoChargingOrderQuery.getPageSize()); // query.with(pageable); // query.with(Sort.by(Sort.Direction.DESC,"create_time")); List<UploadRealTimeMonitoringData> uploadRealTimeMonitoringData = mongoTemplate.find( query , UploadRealTimeMonitoringData.class); UploadRealTimeMonitoringPageData uploadRealTimeMonitoringPageData = new UploadRealTimeMonitoringPageData(); uploadRealTimeMonitoringPageData.setCount(totalElements); uploadRealTimeMonitoringPageData.setRecords(page); return uploadRealTimeMonitoringPageData; } @Override public UploadRealTimeMonitoringData getLastDataById(String transaction_serial_number) { Query query = new Query(); if (StringUtils.isNotEmpty(transaction_serial_number)){ query.addCriteria(Criteria.where("transaction_serial_number").is(transaction_serial_number)); } // 按照 createdAt 字段降序排序 query.with(Sort.by(Sort.Direction.DESC, "create_time")); // 限制结果只返回一条记录 query.limit(1); return mongoTemplate.findOne(query, UploadRealTimeMonitoringData.class); } @Override public void delete(String id) { UploadRealTimeMonitoringData byId = findById(id.toString()); mongoTemplate.remove(byId); } @Override public void updateById(String id) { // 创建查询条件 Query query = new Query(Criteria.where("_id").is(id)); // 创建更新对象 Update update = new Update().set("last_time", new Date()); // 执行更新操作 mongoTemplate.updateFirst(query, update, UploadRealTimeMonitoringData.class); } }