ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/JianGuanAccountFallbackFactory.java
New file @@ -0,0 +1,33 @@ package com.ruoyi.account.api.factory; import com.ruoyi.account.api.feignClient.InviteUserClient; import com.ruoyi.account.api.feignClient.JianGuanAccountClient; import com.ruoyi.account.api.model.TInviteUser; import com.ruoyi.account.api.vo.GetInviteUser; import com.ruoyi.account.api.vo.GovernmentCloudAccountVO; 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 JianGuanAccountFallbackFactory implements org.springframework.cloud.openfeign.FallbackFactory<JianGuanAccountClient> { private static final Logger log = LoggerFactory.getLogger(JianGuanAccountFallbackFactory.class); @Override public JianGuanAccountClient create(Throwable throwable) { log.error("政务云查询数据接口:{}", throwable.getMessage()); return new JianGuanAccountClient() { @Override public R<GovernmentCloudAccountVO> listAll() { return R.fail("政务云查询数据接口Account:" + throwable.getMessage()); } }; } } ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/JianGuanAccountClient.java
New file @@ -0,0 +1,27 @@ package com.ruoyi.account.api.feignClient; import com.ruoyi.account.api.factory.InviteUserFallbackFactory; import com.ruoyi.account.api.model.TInviteUser; import com.ruoyi.account.api.vo.GetInviteUser; import com.ruoyi.account.api.vo.GovernmentCloudAccountVO; 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; /** * @author zhibing.pu * @Date 2024/9/4 17:54 */ @FeignClient(contextId = "JianGuanAccountClient", value = ServiceNameConstants.ACCOUNT_SERVICE, fallbackFactory = InviteUserFallbackFactory.class) public interface JianGuanAccountClient { /** * 政务云查询数据接口 * @return */ @PostMapping("/governmentCloud/listAll") R<GovernmentCloudAccountVO> listAll(); } ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/GovernmentCloudAccountVO.java
New file @@ -0,0 +1,41 @@ package com.ruoyi.account.api.vo; import com.ruoyi.account.api.model.*; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; @Data @ApiModel(value = "CarListVO对象",description = "政务云上传数据VO") public class GovernmentCloudAccountVO { @ApiModelProperty(value = "优惠券") private List<TAppCoupon> reviewRate; @ApiModelProperty(value = "用户") private List<TAppUser> appUsers; @ApiModelProperty(value = "用户地址") private List<TAppUserAddress> appUserAddresses; @ApiModelProperty(value = "用户车辆") private List<TAppUserCar> appUserCars; @ApiModelProperty(value = "用户积分明细") private List<TAppUserIntegralChange> appUserIntegralChanges; @ApiModelProperty(value = "用户签到") private List<TAppUserSign> appUserSigns; @ApiModelProperty(value = "用户标签") private List<TAppUserTag> appUserTags; @ApiModelProperty(value = "用户会员明细") private List<TAppUserVipDetail> appUserVipDetails; @ApiModelProperty(value = "邀请用户") private List<TInviteUser> inviteUsers; @ApiModelProperty(value = "发票") private List<TInvoiceInformation> invoiceInformations; @ApiModelProperty(value = "会员") private List<TVip> vipList; } ruoyi-api/ruoyi-api-account/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -5,4 +5,5 @@ com.ruoyi.account.api.factory.AppUserAddressFallbackFactory com.ruoyi.account.api.factory.AppUserVipDetailFallbackFactory com.ruoyi.account.api.factory.InviteUserFallbackFactory com.ruoyi.account.api.factory.AppUserTagFallbackFactory com.ruoyi.account.api.factory.AppUserTagFallbackFactory com.ruoyi.account.api.factory.JianGuanAccountFallbackFactory ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/GovernmentCloudController.java
New file @@ -0,0 +1,91 @@ package com.ruoyi.account.controller; import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ruoyi.account.api.dto.CouponListDto; import com.ruoyi.account.api.dto.GrantCouponDto; import com.ruoyi.account.api.model.TAppCoupon; import com.ruoyi.account.api.model.TAppUser; import com.ruoyi.account.api.model.TAppUserCar; import com.ruoyi.account.api.model.TAppUserTag; import com.ruoyi.account.api.query.ExchangeRecordGoodsQuery; import com.ruoyi.account.api.vo.ExchangeRecordVO; import com.ruoyi.account.api.vo.GovernmentCloudAccountVO; import com.ruoyi.account.service.TAppCouponService; import com.ruoyi.account.service.TAppUserCarService; import com.ruoyi.account.service.TAppUserService; import com.ruoyi.account.service.TAppUserTagService; import com.ruoyi.chargingPile.api.feignClient.ChargingGunClient; import com.ruoyi.chargingPile.api.feignClient.ChargingPileClient; import com.ruoyi.chargingPile.api.model.TChargingGun; import com.ruoyi.chargingPile.api.model.TChargingPile; import com.ruoyi.chargingPile.api.vo.SiteInfoVO; 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.service.TokenService; import com.ruoyi.order.api.feignClient.ChargingOrderClient; import com.ruoyi.other.api.domain.TCoupon; import com.ruoyi.other.api.feignClient.OtherClient; import com.ruoyi.other.api.vo.CouponListVOVO; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; /** * <p> * 前端控制器 * </p> * * @author luodangjia * @since 2024-08-06 */ @RestController @RequestMapping("/t-app-coupon") public class GovernmentCloudController { @Autowired private TAppCouponService tAppCouponService; @Resource private OtherClient otherClient; @Autowired private TAppUserCarService appUserCarService; @Resource private TokenService tokenService; @Resource private ChargingPileClient chargingPileClient; @Resource private ChargingOrderClient chargingOrderClient; @Resource private ChargingGunClient chargingGunClient; @Autowired private TAppUserTagService appUserTagService; @Autowired private TAppUserService appUserService; // /** // * 获取用户邀请数据 // * @return // */ // @PostMapping("/governmentCloud/listAll") // R<GovernmentCloudAccountVO> listAll() { // GovernmentCloudAccountVO governmentCloudAccountVO = new GovernmentCloudAccountVO(); // tAppCouponService // return governmentCloudAccountVO // } } ruoyi-service/ruoyi-integration/pom.xml
@@ -116,30 +116,36 @@ <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>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> <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> <artifactId>rocketmq-spring-boot-starter</artifactId> <version>2.3.0</version> </dependency> <!--mongodb--> ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/RuoYiIntegrationApplication.java
@@ -6,10 +6,6 @@ import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.stream.annotation.EnableBinding; import org.springframework.cloud.stream.annotation.StreamListener; import org.springframework.cloud.stream.messaging.Sink; import org.springframework.cloud.stream.messaging.Source; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.transaction.annotation.EnableTransactionManagement; @@ -24,7 +20,6 @@ @SpringBootApplication @EnableScheduling//开启定时任务 @EnableTransactionManagement//开启事务 @EnableBinding({ Source.class, Sink.class }) public class RuoYiIntegrationApplication { public static void main(String[] args) { SpringApplication.run(RuoYiIntegrationApplication.class, args); ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECController.java
@@ -399,8 +399,8 @@ stationInfo.setCountryCode(StringUtils.isNotEmpty(datum.getCountryCode()) ? datum.getCountryCode() : "CN"); stationInfo.setAreaCode(datum.getDistrictsCode()); stationInfo.setAddress(datum.getAddress()); stationInfo.setStationTel(datum.getPhone()); stationInfo.setServiceTel(serviceTel); stationInfo.setStationTel(StringUtils.isNotEmpty(datum.getPhone()) ? datum.getPhone().split(",")[0] : ""); stationInfo.setServiceTel(StringUtils.isNotEmpty(serviceTel) ? serviceTel.split(",")[0] : ""); switch (datum.getSiteType()){ case 0: stationInfo.setStationType(StationTypeEnum.OTHER.getType()); @@ -588,7 +588,7 @@ * @return */ @PostMapping("/pushChargingGunStatus") public R pushChargingGunStatus(@RequestParam("fullNumber") String fullNumber, @RequestParam("status") Integer status){ public R pushChargingGunStatus(@RequestParam(value = "fullNumber") String fullNumber, @RequestParam(value = "status") Integer status){ ConnectorStatusInfo connectorStatusInfo = new ConnectorStatusInfo(); connectorStatusInfo.setConnectorID(fullNumber); switch (status){ @@ -1282,7 +1282,7 @@ } chargeDetail.setElecPrice(datum.getElectrovalence()); chargeDetail.setSevicePrice(datum.getServiceCharge()); chargeDetail.setDetailPower(datum.getChargingCapacity()); chargeDetail.setDetailPower(datum.getChargingCapacity().setScale(2, BigDecimal.ROUND_HALF_UP)); chargeDetail.setDetailElecMoney(datum.getPeriodElectricPrice()); chargeDetail.setDetailSeviceMoney(datum.getPeriodServicePrice()); chargeDetails.add(chargeDetail); @@ -1489,6 +1489,7 @@ notificationChargeOrderInfo.setStartChargeSeq(startChargeSeq); TChargingOrder chargingOrder = chargingOrderClient.getChargingOrderByStartChargeSeq(startChargeSeq).getData(); if(null == chargingOrder){ log.info("三方平台流水号获取订单失败"); return null; } TChargingGun chargingGun = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData(); @@ -1556,7 +1557,7 @@ } chargeDetail.setElecPrice(datum.getElectrovalence()); chargeDetail.setSevicePrice(datum.getServiceCharge()); chargeDetail.setDetailPower(datum.getChargingCapacity()); chargeDetail.setDetailPower(datum.getChargingCapacity().setScale(2, BigDecimal.ROUND_HALF_UP)); chargeDetail.setDetailElecMoney(datum.getPeriodElectricPrice()); chargeDetail.setDetailSeviceMoney(datum.getPeriodServicePrice()); chargeDetails.add(chargeDetail); @@ -1751,7 +1752,7 @@ } chargeDetail.setElecPrice(datum.getElectrovalence()); chargeDetail.setSevicePrice(datum.getServiceCharge()); chargeDetail.setDetailPower(datum.getChargingCapacity()); chargeDetail.setDetailPower(datum.getChargingCapacity().setScale(2, BigDecimal.ROUND_HALF_EVEN)); chargeDetail.setDetailElecMoney(datum.getPeriodElectricPrice()); chargeDetail.setDetailSeviceMoney(datum.getPeriodServicePrice()); chargeDetails.add(chargeDetail); ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java
@@ -15,7 +15,6 @@ import com.ruoyi.integration.iotda.utils.tools.MessageUtil; import com.ruoyi.integration.iotda.utils.tools.StrategyUtil; import com.ruoyi.integration.rocket.model.*; import com.ruoyi.integration.rocket.produce.ChargingMessageUtil; import com.ruoyi.integration.rocket.produce.EnhanceProduce; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -49,9 +48,6 @@ @Resource private AccountingStrategyDetailClient accountingStrategyDetailClient; @Resource private ChargingMessageUtil chargingMessageUtil; @@ -84,8 +80,9 @@ switch (service_id){ case SendTagConstant.ONLINE: OnlineMessage onlineMessage = JSON.parseObject(content.toJSONString(),OnlineMessage.class); chargingMessage.setOnlineMessage(onlineMessage); chargingMessageUtil.handleMessage(chargingMessage); sendResult = enhanceProduce.onlineMessage(onlineMessage); // chargingMessage.setOnlineMessage(onlineMessage); // chargingMessageUtil.handleMessage(chargingMessage); // 响应硬件 // 业务处理 登录认证应答 OnlineReply onlineReply = new OnlineReply(); @@ -102,8 +99,9 @@ break; case SendTagConstant.PING: PingMessage pingMessage = JSON.parseObject(content.toJSONString(),PingMessage.class); chargingMessage.setPingMessage(pingMessage); chargingMessageUtil.handleMessage(chargingMessage); sendResult = enhanceProduce.pingMessage(pingMessage); // chargingMessage.setPingMessage(pingMessage); // chargingMessageUtil.handleMessage(chargingMessage); // 响应硬件 Pong pong = new Pong(); pong.setCharging_pile_code(pingMessage.getCharging_pile_code()); @@ -114,22 +112,25 @@ break; case SendTagConstant.END_CHARGE: EndChargeMessage endChargeMessage = JSON.parseObject(content.toJSONString(),EndChargeMessage.class); chargingMessage.setEndChargeMessage(endChargeMessage); chargingMessageUtil.handleMessage(chargingMessage); sendResult = enhanceProduce.endChargeMessage(endChargeMessage); // chargingMessage.setEndChargeMessage(endChargeMessage); // chargingMessageUtil.handleMessage(chargingMessage); // sendResult = enhanceProduce.chargingMessage(chargingMessage); // 响应硬件 break; case SendTagConstant.ERROR_MESSAGE: ErrorMessageMessage errorMessageMessage = JSON.parseObject(content.toJSONString(),ErrorMessageMessage.class); chargingMessage.setErrorMessageMessage(errorMessageMessage); chargingMessageUtil.handleMessage(chargingMessage); sendResult = enhanceProduce.errorMessageMessage(errorMessageMessage); // chargingMessage.setErrorMessageMessage(errorMessageMessage); // chargingMessageUtil.handleMessage(chargingMessage); // sendResult = enhanceProduce.chargingMessage(chargingMessage); // 响应硬件 break; case SendTagConstant.BILLING_MODE_VERIFY: BillingModeVerifyMessage billingModeVerifyMessage = JSON.parseObject(content.toJSONString(),BillingModeVerifyMessage.class); chargingMessage.setBillingModeVerifyMessage(billingModeVerifyMessage); chargingMessageUtil.handleMessage(chargingMessage); sendResult = enhanceProduce.billingModeVerifyMessage(billingModeVerifyMessage); // chargingMessage.setBillingModeVerifyMessage(billingModeVerifyMessage); // chargingMessageUtil.handleMessage(chargingMessage); // 响应硬件 BillingModeVerifyReply billingModeVerifyReply = new BillingModeVerifyReply(); if(billingModeVerifyMessage.getBilling_model_code().equals("0")){ @@ -157,8 +158,9 @@ break; case SendTagConstant.ACQUISITION_BILLING_MODE: AcquisitionBillingModeMessage acquisitionBillingModeMessage = JSON.parseObject(content.toJSONString(),AcquisitionBillingModeMessage.class); chargingMessage.setAcquisitionBillingModeMessage(acquisitionBillingModeMessage); chargingMessageUtil.handleMessage(chargingMessage); sendResult = enhanceProduce.acquisitionBillingModeMessage(acquisitionBillingModeMessage); // chargingMessage.setAcquisitionBillingModeMessage(acquisitionBillingModeMessage); // chargingMessageUtil.handleMessage(chargingMessage); // 响应硬件 计费模型请求应答 1=尖阶段,2=峰阶段,3=平阶段,4=谷阶段 List<TAccountingStrategyDetail> accountingStrategyDetails = accountingStrategyDetailClient.getDetailListByCode(acquisitionBillingModeMessage.getCharging_pile_code()).getData(); Map<Integer, TAccountingStrategyDetail> strategyPrice = StrategyUtil.getStrategyPrice(accountingStrategyDetails); @@ -177,55 +179,63 @@ case SendTagConstant.UPLOAD_REAL_TIME_MONITORING_DATA: log.info("充电实时数据上传"); UploadRealTimeMonitoringDataMessage uploadRealTimeMonitoringDataMessage = JSON.parseObject(content.toJSONString(),UploadRealTimeMonitoringDataMessage.class); chargingMessage.setUploadRealTimeMonitoringDataMessage(uploadRealTimeMonitoringDataMessage); chargingMessageUtil.handleMessage(chargingMessage); sendResult = enhanceProduce.uploadRealTimeMonitoringDataMessage(uploadRealTimeMonitoringDataMessage); // chargingMessage.setUploadRealTimeMonitoringDataMessage(uploadRealTimeMonitoringDataMessage); // chargingMessageUtil.handleMessage(chargingMessage); // sendResult = enhanceProduce.chargingMessage(chargingMessage); // 响应硬件 break; case SendTagConstant.CHARGING_HANDSHAKE: ChargingHandshakeMessage chargingHandshakeMessage = JSON.parseObject(content.toJSONString(),ChargingHandshakeMessage.class); chargingMessage.setChargingHandshakeMessage(chargingHandshakeMessage); chargingMessageUtil.handleMessage(chargingMessage); sendResult = enhanceProduce.chargingHandshakeMessage(chargingHandshakeMessage); // chargingMessage.setChargingHandshakeMessage(chargingHandshakeMessage); // chargingMessageUtil.handleMessage(chargingMessage); // sendResult = enhanceProduce.chargingMessage(chargingMessage); // 响应硬件 break; case SendTagConstant.PARAMETER_SETTING: ParameterSettingMessage parameterSettingMessage = JSON.parseObject(content.toJSONString(),ParameterSettingMessage.class); chargingMessage.setParameterSettingMessage(parameterSettingMessage); chargingMessageUtil.handleMessage(chargingMessage); sendResult = enhanceProduce.parameterSettingMessage(parameterSettingMessage); // chargingMessage.setParameterSettingMessage(parameterSettingMessage); // chargingMessageUtil.handleMessage(chargingMessage); // sendResult = enhanceProduce.chargingMessage(chargingMessage); break; case SendTagConstant.BMS_ABORT: BmsAbortMessage bmsAbortMessage = JSON.parseObject(content.toJSONString(),BmsAbortMessage.class); chargingMessage.setBmsAbortMessage(bmsAbortMessage); chargingMessageUtil.handleMessage(chargingMessage); sendResult = enhanceProduce.bmsAbortMessage(bmsAbortMessage); // chargingMessage.setBmsAbortMessage(bmsAbortMessage); // chargingMessageUtil.handleMessage(chargingMessage); // sendResult = enhanceProduce.chargingMessage(chargingMessage); // 响应硬件 break; case SendTagConstant.MOTOR_ABORT: MotorAbortMessage motorAbortMessage = JSON.parseObject(content.toJSONString(),MotorAbortMessage.class); chargingMessage.setMotorAbortMessage(motorAbortMessage); chargingMessageUtil.handleMessage(chargingMessage); sendResult = enhanceProduce.motorAbortMessage(motorAbortMessage); // chargingMessage.setMotorAbortMessage(motorAbortMessage); // chargingMessageUtil.handleMessage(chargingMessage); // sendResult = enhanceProduce.chargingMessage(chargingMessage); break; case SendTagConstant.BMS_DEMAND_AND_CHARGER_EXPORTATION: BmsDemandAndChargerExportationMessage bmsDemandAndChargerExportationMessage = JSON.parseObject(content.toJSONString(),BmsDemandAndChargerExportationMessage.class); chargingMessage.setBmsDemandAndChargerExportationMessage(bmsDemandAndChargerExportationMessage); chargingMessageUtil.handleMessage(chargingMessage); sendResult = enhanceProduce.bmsDemandAndChargerExportationMessage(bmsDemandAndChargerExportationMessage); // chargingMessage.setBmsDemandAndChargerExportationMessage(bmsDemandAndChargerExportationMessage); // chargingMessageUtil.handleMessage(chargingMessage); // sendResult = enhanceProduce.chargingMessage(chargingMessage); // 响应硬件 break; case SendTagConstant.BMS_INFORMATION: BmsInformationMessage bmsInformationMessage = JSON.parseObject(content.toJSONString(),BmsInformationMessage.class); chargingMessage.setBmsInformationMessage(bmsInformationMessage); chargingMessageUtil.handleMessage(chargingMessage); sendResult = enhanceProduce.bmsInformationMessage(bmsInformationMessage); // chargingMessage.setBmsInformationMessage(bmsInformationMessage); // chargingMessageUtil.handleMessage(chargingMessage); // sendResult = enhanceProduce.chargingMessage(chargingMessage); // 响应硬件 break; case SendTagConstant.CHARGING_PILE_STARTS_CHARGING: ChargingPileStartsChargingMessage chargingPileStartsChargingMessage = JSON.parseObject(content.toJSONString(),ChargingPileStartsChargingMessage.class); chargingMessage.setChargingPileStartsChargingMessage(chargingPileStartsChargingMessage); chargingMessageUtil.handleMessage(chargingMessage); sendResult = enhanceProduce.chargingPileStartsChargingMessage(chargingPileStartsChargingMessage); // chargingMessage.setChargingPileStartsChargingMessage(chargingPileStartsChargingMessage); // chargingMessageUtil.handleMessage(chargingMessage); // 响应硬件 PlatformConfirmationCharging platformConfirmationCharging = new PlatformConfirmationCharging(); platformConfirmationCharging.setCharging_pile_code(chargingPileStartsChargingMessage.getCharging_pile_code()); @@ -239,23 +249,26 @@ break; case SendTagConstant.PLATFORM_START_CHARGING_REPLY: PlatformStartChargingReplyMessage platformStartChargingReplyMessage = JSON.parseObject(content.toJSONString(),PlatformStartChargingReplyMessage.class); chargingMessage.setPlatformStartChargingReplyMessage(platformStartChargingReplyMessage); chargingMessageUtil.handleMessage(chargingMessage); sendResult = enhanceProduce.platformStartChargingReplyMessage(platformStartChargingReplyMessage); // chargingMessage.setPlatformStartChargingReplyMessage(platformStartChargingReplyMessage); // chargingMessageUtil.handleMessage(chargingMessage); // sendResult = enhanceProduce.chargingMessage(chargingMessage); // 响应硬件 break; case SendTagConstant.PLATFORM_STOP_CHARGING_REPLY: PlatformStopChargingReplyMessage platformStopChargingReplyMessage = JSON.parseObject(content.toJSONString(),PlatformStopChargingReplyMessage.class); chargingMessage.setPlatformStopChargingReplyMessage(platformStopChargingReplyMessage); chargingMessageUtil.handleMessage(chargingMessage); sendResult = enhanceProduce.platformStopChargingReplyMessage(platformStopChargingReplyMessage); // chargingMessage.setPlatformStopChargingReplyMessage(platformStopChargingReplyMessage); // chargingMessageUtil.handleMessage(chargingMessage); // sendResult = enhanceProduce.chargingMessage(chargingMessage); // 响应硬件 break; case SendTagConstant.TRANSACTION_RECORD: TransactionRecordMessage transactionRecordMessage = JSON.parseObject(content.toJSONString(),TransactionRecordMessage.class); transactionRecordMessage.setResult(content.toJSONString()); chargingMessage.setTransactionRecordMessage(transactionRecordMessage); chargingMessageUtil.handleMessage(chargingMessage); sendResult = enhanceProduce.transactionRecordMessage(transactionRecordMessage); // chargingMessage.setTransactionRecordMessage(transactionRecordMessage); // chargingMessageUtil.handleMessage(chargingMessage); // 响应硬件 ConfirmTransactionRecord confirmTransactionRecord = new ConfirmTransactionRecord(); confirmTransactionRecord.setTransaction_serial_number(transactionRecordMessage.getTransaction_serial_number()); @@ -265,36 +278,41 @@ break; case SendTagConstant.UPDATE_BALANCE_REPLY: UpdateBalanceReplyMessage updateBalanceReplyMessage = JSON.parseObject(content.toJSONString(),UpdateBalanceReplyMessage.class); chargingMessage.setUpdateBalanceReplyMessage(updateBalanceReplyMessage); chargingMessageUtil.handleMessage(chargingMessage); sendResult = enhanceProduce.updateBalanceReplyMessage(updateBalanceReplyMessage); // chargingMessage.setUpdateBalanceReplyMessage(updateBalanceReplyMessage); // chargingMessageUtil.handleMessage(chargingMessage); // sendResult = enhanceProduce.chargingMessage(chargingMessage); // 响应硬件 break; case SendTagConstant.SYNCHRONIZE_OFFLINE_CARD_REPLY: SynchronizeOfflineCardReplyMessage synchronizeOfflineCardReplyMessage = JSON.parseObject(content.toJSONString(),SynchronizeOfflineCardReplyMessage.class); chargingMessage.setSynchronizeOfflineCardReplyMessage(synchronizeOfflineCardReplyMessage); chargingMessageUtil.handleMessage(chargingMessage); sendResult = enhanceProduce.synchronizeOfflineCardReplyMessage(synchronizeOfflineCardReplyMessage); // chargingMessage.setSynchronizeOfflineCardReplyMessage(synchronizeOfflineCardReplyMessage); // chargingMessageUtil.handleMessage(chargingMessage); // sendResult = enhanceProduce.chargingMessage(chargingMessage); // 响应硬件 break; case SendTagConstant.CLEAR_OFFLINE_CARD_REPLY: ClearOfflineCardReplyMessage clearOfflineCardReplyMessage = JSON.parseObject(content.toJSONString(),ClearOfflineCardReplyMessage.class); chargingMessage.setClearOfflineCardReplyMessage(clearOfflineCardReplyMessage); chargingMessageUtil.handleMessage(chargingMessage); sendResult = enhanceProduce.clearOfflineCardReplyMessage(clearOfflineCardReplyMessage); // chargingMessage.setClearOfflineCardReplyMessage(clearOfflineCardReplyMessage); // chargingMessageUtil.handleMessage(chargingMessage); // sendResult = enhanceProduce.chargingMessage(chargingMessage); // 响应硬件 break; case SendTagConstant.WORKING_PARAMETER_SETTING_REPLY: WorkingParameterSettingReplyMessage workingParameterSettingReplyMessage = JSON.parseObject(content.toJSONString(),WorkingParameterSettingReplyMessage.class); chargingMessage.setWorkingParameterSettingReplyMessage(workingParameterSettingReplyMessage); chargingMessageUtil.handleMessage(chargingMessage); sendResult = enhanceProduce.workingParameterSettingReplyMessage(workingParameterSettingReplyMessage); // chargingMessage.setWorkingParameterSettingReplyMessage(workingParameterSettingReplyMessage); // chargingMessageUtil.handleMessage(chargingMessage); // sendResult = enhanceProduce.chargingMessage(chargingMessage); // 响应硬件 break; case SendTagConstant.TIMING_SETTING: TimingSettingMessage timingSettingMessage = JSON.parseObject(content.toJSONString(),TimingSettingMessage.class); chargingMessage.setTimingSettingMessage(timingSettingMessage); chargingMessageUtil.handleMessage(chargingMessage); sendResult = enhanceProduce.timingSettingMessage(timingSettingMessage); // chargingMessage.setTimingSettingMessage(timingSettingMessage); // chargingMessageUtil.handleMessage(chargingMessage); // 响应硬件 对时设置应答 TimingSettingReply timingSettingReply = new TimingSettingReply(); timingSettingReply.setCharging_pile_code(timingSettingMessage.getCharging_pile_code()); @@ -304,55 +322,62 @@ break; case SendTagConstant.SETUP_BILLING_MODEL_REPLY: SetupBillingModelReplyMessage setupBillingModelReplyMessage = JSON.parseObject(content.toJSONString(),SetupBillingModelReplyMessage.class); chargingMessage.setSetupBillingModelReplyMessage(setupBillingModelReplyMessage); chargingMessageUtil.handleMessage(chargingMessage); sendResult = enhanceProduce.setupBillingModelReplyMessage(setupBillingModelReplyMessage); // chargingMessage.setSetupBillingModelReplyMessage(setupBillingModelReplyMessage); // chargingMessageUtil.handleMessage(chargingMessage); // sendResult = enhanceProduce.chargingMessage(chargingMessage); // 响应硬件 break; case SendTagConstant.GROUND_LOCK_REAL_TIME_DATA: GroundLockRealTimeDataMessage groundLockRealTimeDataMessage = JSON.parseObject(content.toJSONString(),GroundLockRealTimeDataMessage.class); chargingMessage.setGroundLockRealTimeDataMessage(groundLockRealTimeDataMessage); chargingMessageUtil.handleMessage(chargingMessage); sendResult = enhanceProduce.groundLockRealTimeDataMessage(groundLockRealTimeDataMessage); // chargingMessage.setGroundLockRealTimeDataMessage(groundLockRealTimeDataMessage); // chargingMessageUtil.handleMessage(chargingMessage); // sendResult = enhanceProduce.chargingMessage(chargingMessage); // 响应硬件 break; case SendTagConstant.CHARGING_PILE_RETURNS_GROUND_LOCK_DATA: ChargingPileReturnsGroundLockDataMessage chargingPileReturnsGroundLockDataMessage = JSON.parseObject(content.toJSONString(),ChargingPileReturnsGroundLockDataMessage.class); chargingMessage.setChargingPileReturnsGroundLockDataMessage(chargingPileReturnsGroundLockDataMessage); chargingMessageUtil.handleMessage(chargingMessage); sendResult = enhanceProduce.chargingPileReturnsGroundLockDataMessage(chargingPileReturnsGroundLockDataMessage); // chargingMessage.setChargingPileReturnsGroundLockDataMessage(chargingPileReturnsGroundLockDataMessage); // chargingMessageUtil.handleMessage(chargingMessage); // sendResult = enhanceProduce.chargingMessage(chargingMessage); // 响应硬件 break; case SendTagConstant.PLATFORM_RESTART_REPLY: PlatformRestartReplyMessage platformRestartReplyMessage = JSON.parseObject(content.toJSONString(),PlatformRestartReplyMessage.class); chargingMessage.setPlatformRestartReplyMessage(platformRestartReplyMessage); chargingMessageUtil.handleMessage(chargingMessage); sendResult = enhanceProduce.platformRestartReplyMessage(platformRestartReplyMessage); // chargingMessage.setPlatformRestartReplyMessage(platformRestartReplyMessage); // chargingMessageUtil.handleMessage(chargingMessage); // sendResult = enhanceProduce.chargingMessage(chargingMessage); // 响应硬件 break; case SendTagConstant.QR_CODE_DELIVERY_REPLY: QrCodeDeliveryReplyMessage qrCodeDeliveryReplyMessage = JSON.parseObject(content.toJSONString(),QrCodeDeliveryReplyMessage.class); chargingMessage.setQrCodeDeliveryReplyMessage(qrCodeDeliveryReplyMessage); chargingMessageUtil.handleMessage(chargingMessage); sendResult = enhanceProduce.qrCodeDeliveryReplyMessage(qrCodeDeliveryReplyMessage); // chargingMessage.setQrCodeDeliveryReplyMessage(qrCodeDeliveryReplyMessage); // chargingMessageUtil.handleMessage(chargingMessage); // sendResult = enhanceProduce.chargingMessage(chargingMessage); // 响应硬件 break; case SendTagConstant.SECURITY_DETECTION: SecurityDetectionMessage securityDetectionMessage = JSON.parseObject(content.toJSONString(),SecurityDetectionMessage.class); chargingMessage.setSecurityDetectionMessage(securityDetectionMessage); chargingMessageUtil.handleMessage(chargingMessage); sendResult = enhanceProduce.securityDetectionMessage(securityDetectionMessage); // chargingMessage.setSecurityDetectionMessage(securityDetectionMessage); // chargingMessageUtil.handleMessage(chargingMessage); // sendResult = enhanceProduce.chargingMessage(chargingMessage); // 响应硬件 break; default: PlatformRemoteUpdateReplyMessage platformRemoteUpdateReplyMessage = JSON.parseObject(content.toJSONString(),PlatformRemoteUpdateReplyMessage.class); chargingMessage.setPlatformRemoteUpdateReplyMessage(platformRemoteUpdateReplyMessage); chargingMessageUtil.handleMessage(chargingMessage); sendResult = enhanceProduce.platformRemoteUpdateReplyMessage(platformRemoteUpdateReplyMessage); // chargingMessage.setPlatformRemoteUpdateReplyMessage(platformRemoteUpdateReplyMessage); // chargingMessageUtil.handleMessage(chargingMessage); // sendResult = enhanceProduce.chargingMessage(chargingMessage); // 响应硬件 break; } // log.info("rocketmq消息下发结果:{}",sendResult); log.info("rocketmq消息下发结果:{}",sendResult); return AjaxResult.success(); } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/AcquisitionBillingModeMessageListener.java
@@ -30,76 +30,22 @@ messageModel = MessageModel.CLUSTERING, consumerGroup = "charge_acquisition_billing_mode", topic = "charge_acquisition_billing_mode", selectorExpression = "acquisition_billing_mode", // 明确指定标签 consumeThreadMax = 5 //默认是64个线程并发消息,配置 consumeThreadMax 参数指定并发消费线程数,避免太大导致资源不够 selectorExpression = "acquisition_billing_mode" ) public class AcquisitionBillingModeMessageListener extends EnhanceMessageHandler<AcquisitionBillingModeMessage> implements RocketMQListener<AcquisitionBillingModeMessage> { public class AcquisitionBillingModeMessageListener implements RocketMQListener<AcquisitionBillingModeMessage> { @Autowired private AcquisitionBillingModeService acquisitionBillingModeService; @Autowired private AccountingStrategyDetailClient accountingStrategyDetailClient; @Autowired private IotMessageProduce iotMessageProduce; @Autowired private MessageUtil messageUtil; @Override protected void handleMessage(AcquisitionBillingModeMessage message) throws Exception { // 此时这里才是最终的业务处理,代码只需要处理资源类关闭异常,其他的可以交给父类重试 log.info("充电桩计费模型请求-业务消息处理:{}",message); // 持久化消息 AcquisitionBillingMode acquisitionBillingMode = new AcquisitionBillingMode(); BeanUtils.copyProperties(message,acquisitionBillingMode); acquisitionBillingModeService.create(acquisitionBillingMode); // 业务处理 计费模型请求应答 1=尖阶段,2=峰阶段,3=平阶段,4=谷阶段 // List<TAccountingStrategyDetail> accountingStrategyDetails = accountingStrategyDetailClient.getDetailListByCode(message.getCharging_pile_code()).getData(); // Map<Integer, TAccountingStrategyDetail> strategyPrice = StrategyUtil.getStrategyPrice(accountingStrategyDetails); // // 价格设置 // AcquisitionBillingModeReply acquisitionBillingModeReply = new AcquisitionBillingModeReply(); // StrategyUtil.setStrategyPrice(strategyPrice,acquisitionBillingModeReply); // // 时段设置 // StrategyUtil.setTime(accountingStrategyDetails,acquisitionBillingModeReply); // iotMessageProduce.sendMessage(acquisitionBillingModeReply.getCharging_pile_code(), ServiceIdMenu.ACQUISITION_BILLING_MODE_REPLY.getKey(),messageUtil.acquisitionBillingModeReply(acquisitionBillingModeReply)); } @Override protected void handleMaxRetriesExceeded(AcquisitionBillingModeMessage message) { // 当超过指定重试次数消息时此处方法会被调用 // 生产中可以进行回退或其他业务操作 log.error("消息消费失败,请执行后续处理"); } /** * 是否执行重试机制 */ @Override protected boolean isRetry() { return true; } @Override protected boolean throwException() { // 是否抛出异常,false搭配retry自行处理异常 return false; } /** * 若需要处理消息过滤,在父级中进行统一处理,或者在此处实现之后,自行处理 * @param message 待处理消息 * @return true: 本次消息被过滤,false:不过滤 */ @Override protected boolean filter(AcquisitionBillingModeMessage message) { // 此处可做消息过滤 return false; } /** * 监听消费消息,不需要执行业务处理,委派给父类做基础操作,父类做完基础操作后会调用子类的实际处理类型 */ @Override public void onMessage(AcquisitionBillingModeMessage message) { super.dispatchMessage(message); log.info("充电桩计费模型请求-业务消息处理:{}",message); // 持久化消息 AcquisitionBillingMode acquisitionBillingMode = new AcquisitionBillingMode(); BeanUtils.copyProperties(message,acquisitionBillingMode); acquisitionBillingModeService.create(acquisitionBillingMode); } } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/BillingModeVerifyMessageListener.java
@@ -27,63 +27,22 @@ messageModel = MessageModel.CLUSTERING, consumerGroup = "charge_billing_mode_verify", topic = "charge_billing_mode_verify", selectorExpression = "billing_mode_verify", consumeThreadMax = 5 //默认是64个线程并发消息,配置 consumeThreadMax 参数指定并发消费线程数,避免太大导致资源不够 selectorExpression = "billing_mode_verify" ) public class BillingModeVerifyMessageListener extends EnhanceMessageHandler<BillingModeVerifyMessage> implements RocketMQListener<BillingModeVerifyMessage> { public class BillingModeVerifyMessageListener implements RocketMQListener<BillingModeVerifyMessage> { @Autowired private BillingModeVerifyService billingModeVerifyService; @Override protected void handleMessage(BillingModeVerifyMessage message) throws Exception { // 此时这里才是最终的业务处理,代码只需要处理资源类关闭异常,其他的可以交给父类重试 log.info("计费模型验证请求-业务消息处理:{}",message); // 持久化消息 BillingModeVerify billingModeVerify = new BillingModeVerify(); BeanUtils.copyProperties(message,billingModeVerify); billingModeVerifyService.create(billingModeVerify); // 业务处理 } @Override protected void handleMaxRetriesExceeded(BillingModeVerifyMessage message) { // 当超过指定重试次数消息时此处方法会被调用 // 生产中可以进行回退或其他业务操作 log.error("消息消费失败,请执行后续处理"); } /** * 是否执行重试机制 */ @Override protected boolean isRetry() { return true; } @Override protected boolean throwException() { // 是否抛出异常,false搭配retry自行处理异常 return false; } /** * 若需要处理消息过滤,在父级中进行统一处理,或者在此处实现之后,自行处理 * @param message 待处理消息 * @return true: 本次消息被过滤,false:不过滤 */ @Override protected boolean filter(BillingModeVerifyMessage message) { // 此处可做消息过滤 return false; } /** * 监听消费消息,不需要执行业务处理,委派给父类做基础操作,父类做完基础操作后会调用子类的实际处理类型 */ @Override public void onMessage(BillingModeVerifyMessage message) { super.dispatchMessage(message); log.info("计费模型验证请求-业务消息处理:{}",message); // 持久化消息 BillingModeVerify billingModeVerify = new BillingModeVerify(); BeanUtils.copyProperties(message,billingModeVerify); billingModeVerifyService.create(billingModeVerify); } } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/BmsAbortMessageListener.java
@@ -15,6 +15,9 @@ import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; @Slf4j @Component @@ -22,22 +25,21 @@ messageModel = MessageModel.CLUSTERING, consumerGroup = "charge_bms_abort", topic = "charge_bms_abort", selectorExpression = "bms_abort", consumeThreadMax = 5 //默认是64个线程并发消息,配置 consumeThreadMax 参数指定并发消费线程数,避免太大导致资源不够 selectorExpression = "bms_abort" ) public class BmsAbortMessageListener extends EnhanceMessageHandler<BmsAbortMessage> implements RocketMQListener<BmsAbortMessage> { public class BmsAbortMessageListener implements RocketMQListener<BmsAbortMessage> { @Autowired private BmsAbortService bmsAbortService; @Resource private ChargingOrderClient chargingOrderClient; /** * 监听消费消息,不需要执行业务处理,委派给父类做基础操作,父类做完基础操作后会调用子类的实际处理类型 */ @Override protected void handleMessage(BmsAbortMessage message) throws Exception { // 此时这里才是最终的业务处理,代码只需要处理资源类关闭异常,其他的可以交给父类重试 public void onMessage(BmsAbortMessage message) { log.info("充电阶段BMS中止-业务消息处理:{}",message); // 持久化消息 BmsAbort bmsAbort = new BmsAbort(); @@ -45,46 +47,5 @@ bmsAbortService.create(bmsAbort); // 业务处理 chargingOrderClient.excelEndCharge(bmsAbort.getTransaction_serial_number()); } @Override protected void handleMaxRetriesExceeded(BmsAbortMessage message) { // 当超过指定重试次数消息时此处方法会被调用 // 生产中可以进行回退或其他业务操作 log.error("消息消费失败,请执行后续处理"); } /** * 是否执行重试机制 */ @Override protected boolean isRetry() { return true; } @Override protected boolean throwException() { // 是否抛出异常,false搭配retry自行处理异常 return false; } /** * 若需要处理消息过滤,在父级中进行统一处理,或者在此处实现之后,自行处理 * @param message 待处理消息 * @return true: 本次消息被过滤,false:不过滤 */ @Override protected boolean filter(BmsAbortMessage message) { // 此处可做消息过滤 return false; } /** * 监听消费消息,不需要执行业务处理,委派给父类做基础操作,父类做完基础操作后会调用子类的实际处理类型 */ @Override public void onMessage(BmsAbortMessage message) { super.dispatchMessage(message); } } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/BmsDemandAndChargerExportationMessageListener.java
@@ -15,6 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.Objects; @Slf4j @@ -23,69 +24,32 @@ messageModel = MessageModel.CLUSTERING, consumerGroup = "charge_bms_demand_and_charger_exportation", topic = "charge_bms_demand_and_charger_exportation", selectorExpression = "bms_demand_and_charger_exportation", consumeThreadMax = 5 //默认是64个线程并发消息,配置 consumeThreadMax 参数指定并发消费线程数,避免太大导致资源不够 selectorExpression = "bms_demand_and_charger_exportation" ) public class BmsDemandAndChargerExportationMessageListener extends EnhanceMessageHandler<BmsDemandAndChargerExportationMessage> implements RocketMQListener<BmsDemandAndChargerExportationMessage> { public class BmsDemandAndChargerExportationMessageListener implements RocketMQListener<BmsDemandAndChargerExportationMessage> { @Autowired private BmsDemandAndChargerExportationService bmsDemandAndChargerExportationService; @Autowired @Resource private ChargingOrderClient chargingOrderClient; @Override protected void handleMessage(BmsDemandAndChargerExportationMessage message) throws Exception { // 此时这里才是最终的业务处理,代码只需要处理资源类关闭异常,其他的可以交给父类重试 log.info("充电过程BMS需求、充电机输出-业务消息处理:{}",message); // 持久化消息 BmsDemandAndChargerExportation bmsDemandAndChargerExportation = new BmsDemandAndChargerExportation(); BeanUtils.copyProperties(message,bmsDemandAndChargerExportation); bmsDemandAndChargerExportationService.create(bmsDemandAndChargerExportation); // 业务处理 TChargingOrder chargingOrder = chargingOrderClient.getOrderByCode(message.getTransaction_serial_number()).getData(); if(Objects.nonNull(chargingOrder)){ chargingOrder.setNeedElec(message.getBms_current_requirements()); chargingOrderClient.updateChargingOrder(chargingOrder); } } @Override protected void handleMaxRetriesExceeded(BmsDemandAndChargerExportationMessage message) { // 当超过指定重试次数消息时此处方法会被调用 // 生产中可以进行回退或其他业务操作 log.error("消息消费失败,请执行后续处理"); } /** * 是否执行重试机制 */ @Override protected boolean isRetry() { return true; } @Override protected boolean throwException() { // 是否抛出异常,false搭配retry自行处理异常 return false; } /** * 若需要处理消息过滤,在父级中进行统一处理,或者在此处实现之后,自行处理 * @param message 待处理消息 * @return true: 本次消息被过滤,false:不过滤 */ @Override protected boolean filter(BmsDemandAndChargerExportationMessage message) { // 此处可做消息过滤 return false; } /** * 监听消费消息,不需要执行业务处理,委派给父类做基础操作,父类做完基础操作后会调用子类的实际处理类型 */ @Override public void onMessage(BmsDemandAndChargerExportationMessage message) { super.dispatchMessage(message); log.info("充电过程BMS需求、充电机输出-业务消息处理:{}",message); // 持久化消息 BmsDemandAndChargerExportation bmsDemandAndChargerExportation = new BmsDemandAndChargerExportation(); BeanUtils.copyProperties(message,bmsDemandAndChargerExportation); bmsDemandAndChargerExportationService.create(bmsDemandAndChargerExportation); // 业务处理 TChargingOrder chargingOrderBms = chargingOrderClient.getOrderByCode(message.getTransaction_serial_number()).getData(); if(Objects.nonNull(chargingOrderBms)){ chargingOrderBms.setNeedElec(message.getBms_current_requirements()); chargingOrderClient.updateChargingOrder(chargingOrderBms); } } } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/BmsInformationMessageListener.java
@@ -1,10 +1,8 @@ package com.ruoyi.integration.rocket.listener; import com.ruoyi.integration.api.model.BmsDemandAndChargerExportation; import com.ruoyi.integration.api.model.BmsInformation; import com.ruoyi.integration.mongodb.service.BmsInformationService; import com.ruoyi.integration.rocket.model.BmsInformationMessage; import com.ruoyi.integration.rocket.util.EnhanceMessageHandler; import lombok.extern.slf4j.Slf4j; import org.apache.rocketmq.spring.annotation.MessageModel; import org.apache.rocketmq.spring.annotation.RocketMQMessageListener; @@ -19,62 +17,22 @@ messageModel = MessageModel.CLUSTERING, consumerGroup = "charge_bms_information", topic = "charge_bms_information", selectorExpression = "bms_information", consumeThreadMax = 5 //默认是64个线程并发消息,配置 consumeThreadMax 参数指定并发消费线程数,避免太大导致资源不够 selectorExpression = "bms_information" ) public class BmsInformationMessageListener extends EnhanceMessageHandler<BmsInformationMessage> implements RocketMQListener<BmsInformationMessage> { public class BmsInformationMessageListener implements RocketMQListener<BmsInformationMessage> { @Autowired private BmsInformationService bmsInformationService; @Override protected void handleMessage(BmsInformationMessage message) throws Exception { // 此时这里才是最终的业务处理,代码只需要处理资源类关闭异常,其他的可以交给父类重试 log.info("充电过程BMS信息-业务消息处理:{}",message); // 持久化消息 BmsInformation bmsInformation = new BmsInformation(); BeanUtils.copyProperties(message,bmsInformation); bmsInformationService.create(bmsInformation); // 业务处理 } @Override protected void handleMaxRetriesExceeded(BmsInformationMessage message) { // 当超过指定重试次数消息时此处方法会被调用 // 生产中可以进行回退或其他业务操作 log.error("消息消费失败,请执行后续处理"); } /** * 是否执行重试机制 */ @Override protected boolean isRetry() { return true; } @Override protected boolean throwException() { // 是否抛出异常,false搭配retry自行处理异常 return false; } /** * 若需要处理消息过滤,在父级中进行统一处理,或者在此处实现之后,自行处理 * @param message 待处理消息 * @return true: 本次消息被过滤,false:不过滤 */ @Override protected boolean filter(BmsInformationMessage message) { // 此处可做消息过滤 return false; } /** * 监听消费消息,不需要执行业务处理,委派给父类做基础操作,父类做完基础操作后会调用子类的实际处理类型 */ @Override public void onMessage(BmsInformationMessage message) { super.dispatchMessage(message); log.info("充电过程BMS信息-业务消息处理:{}",message); // 持久化消息 BmsInformation bmsInformation = new BmsInformation(); BeanUtils.copyProperties(message,bmsInformation); bmsInformationService.create(bmsInformation); } } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/ChargingHandshakeMessageListener.java
@@ -19,62 +19,23 @@ messageModel = MessageModel.CLUSTERING, consumerGroup = "charge_charging_handshake", topic = "charge_charging_handshake", selectorExpression = "charging_handshake", consumeThreadMax = 5 //默认是64个线程并发消息,配置 consumeThreadMax 参数指定并发消费线程数,避免太大导致资源不够 selectorExpression = "charging_handshake" ) public class ChargingHandshakeMessageListener extends EnhanceMessageHandler<ChargingHandshakeMessage> implements RocketMQListener<ChargingHandshakeMessage> { public class ChargingHandshakeMessageListener implements RocketMQListener<ChargingHandshakeMessage> { @Autowired private ChargingHandshakeService chargingHandshakeService; @Override protected void handleMessage(ChargingHandshakeMessage message) throws Exception { // 此时这里才是最终的业务处理,代码只需要处理资源类关闭异常,其他的可以交给父类重试 log.info("充电握手-业务消息处理:{}",message); // 持久化消息 ChargingHandshake chargingHandshake = new ChargingHandshake(); BeanUtils.copyProperties(message,chargingHandshake); chargingHandshakeService.create(chargingHandshake); // 业务处理 } @Override protected void handleMaxRetriesExceeded(ChargingHandshakeMessage message) { // 当超过指定重试次数消息时此处方法会被调用 // 生产中可以进行回退或其他业务操作 log.error("消息消费失败,请执行后续处理"); } /** * 是否执行重试机制 */ @Override protected boolean isRetry() { return true; } @Override protected boolean throwException() { // 是否抛出异常,false搭配retry自行处理异常 return false; } /** * 若需要处理消息过滤,在父级中进行统一处理,或者在此处实现之后,自行处理 * @param message 待处理消息 * @return true: 本次消息被过滤,false:不过滤 */ @Override protected boolean filter(ChargingHandshakeMessage message) { // 此处可做消息过滤 return false; } /** * 监听消费消息,不需要执行业务处理,委派给父类做基础操作,父类做完基础操作后会调用子类的实际处理类型 */ @Override public void onMessage(ChargingHandshakeMessage message) { super.dispatchMessage(message); log.info("充电握手-业务消息处理:{}",message); // 持久化消息 ChargingHandshake chargingHandshake = new ChargingHandshake(); BeanUtils.copyProperties(message,chargingHandshake); chargingHandshakeService.create(chargingHandshake); } } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/ChargingPileReturnsGroundLockDataMessageListener.java
@@ -19,62 +19,24 @@ messageModel = MessageModel.CLUSTERING, consumerGroup = "charge_charging_pile_returns_ground_lock_data", topic = "charge_charging_pile_returns_ground_lock_data", selectorExpression = "charging_pile_returns_ground_lock_data", consumeThreadMax = 5 //默认是64个线程并发消息,配置 consumeThreadMax 参数指定并发消费线程数,避免太大导致资源不够 selectorExpression = "charging_pile_returns_ground_lock_data" ) public class ChargingPileReturnsGroundLockDataMessageListener extends EnhanceMessageHandler<ChargingPileReturnsGroundLockDataMessage> implements RocketMQListener<ChargingPileReturnsGroundLockDataMessage> { public class ChargingPileReturnsGroundLockDataMessageListener implements RocketMQListener<ChargingPileReturnsGroundLockDataMessage> { @Autowired private ChargingPileReturnsGroundLockDataService chargingPileReturnsGroundLockDataService; @Override protected void handleMessage(ChargingPileReturnsGroundLockDataMessage message) throws Exception { // 此时这里才是最终的业务处理,代码只需要处理资源类关闭异常,其他的可以交给父类重试 log.info("充电桩返回数据(上行)-业务消息处理:{}",message); // 持久化消息 ChargingPileReturnsGroundLockData chargingPileReturnsGroundLockData = new ChargingPileReturnsGroundLockData(); BeanUtils.copyProperties(message,chargingPileReturnsGroundLockData); chargingPileReturnsGroundLockDataService.create(chargingPileReturnsGroundLockData); // 业务处理 } @Override protected void handleMaxRetriesExceeded(ChargingPileReturnsGroundLockDataMessage message) { // 当超过指定重试次数消息时此处方法会被调用 // 生产中可以进行回退或其他业务操作 log.error("消息消费失败,请执行后续处理"); } /** * 是否执行重试机制 */ @Override protected boolean isRetry() { return true; } @Override protected boolean throwException() { // 是否抛出异常,false搭配retry自行处理异常 return false; } /** * 若需要处理消息过滤,在父级中进行统一处理,或者在此处实现之后,自行处理 * @param message 待处理消息 * @return true: 本次消息被过滤,false:不过滤 */ @Override protected boolean filter(ChargingPileReturnsGroundLockDataMessage message) { // 此处可做消息过滤 return false; } /** * 监听消费消息,不需要执行业务处理,委派给父类做基础操作,父类做完基础操作后会调用子类的实际处理类型 */ @Override public void onMessage(ChargingPileReturnsGroundLockDataMessage message) { super.dispatchMessage(message); log.info("充电桩返回数据(上行)-业务消息处理:{}",message); // 持久化消息 ChargingPileReturnsGroundLockData chargingPileReturnsGroundLockData = new ChargingPileReturnsGroundLockData(); BeanUtils.copyProperties(message,chargingPileReturnsGroundLockData); chargingPileReturnsGroundLockDataService.create(chargingPileReturnsGroundLockData); } } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/ChargingPileStartsChargingMessageListener.java
@@ -19,62 +19,24 @@ messageModel = MessageModel.CLUSTERING, consumerGroup = "charge_charging_pile_starts_charging", topic = "charge_charging_pile_starts_charging", selectorExpression = "charging_pile_starts_charging", consumeThreadMax = 5 //默认是64个线程并发消息,配置 consumeThreadMax 参数指定并发消费线程数,避免太大导致资源不够 selectorExpression = "charging_pile_starts_charging" ) public class ChargingPileStartsChargingMessageListener extends EnhanceMessageHandler<ChargingPileStartsChargingMessage> implements RocketMQListener<ChargingPileStartsChargingMessage> { public class ChargingPileStartsChargingMessageListener implements RocketMQListener<ChargingPileStartsChargingMessage> { @Autowired private ChargingPileStartsChargingService chargingPileStartsChargingService; @Override protected void handleMessage(ChargingPileStartsChargingMessage message) throws Exception { // 此时这里才是最终的业务处理,代码只需要处理资源类关闭异常,其他的可以交给父类重试 log.info("充电桩主动申请启动充电-业务消息处理:{}",message); // 持久化消息 ChargingPileStartsCharging chargingPileStartsCharging = new ChargingPileStartsCharging(); BeanUtils.copyProperties(message,chargingPileStartsCharging); chargingPileStartsChargingService.create(chargingPileStartsCharging); // 业务处理 } @Override protected void handleMaxRetriesExceeded(ChargingPileStartsChargingMessage message) { // 当超过指定重试次数消息时此处方法会被调用 // 生产中可以进行回退或其他业务操作 log.error("消息消费失败,请执行后续处理"); } /** * 是否执行重试机制 */ @Override protected boolean isRetry() { return true; } @Override protected boolean throwException() { // 是否抛出异常,false搭配retry自行处理异常 return false; } /** * 若需要处理消息过滤,在父级中进行统一处理,或者在此处实现之后,自行处理 * @param message 待处理消息 * @return true: 本次消息被过滤,false:不过滤 */ @Override protected boolean filter(ChargingPileStartsChargingMessage message) { // 此处可做消息过滤 return false; } /** * 监听消费消息,不需要执行业务处理,委派给父类做基础操作,父类做完基础操作后会调用子类的实际处理类型 */ @Override public void onMessage(ChargingPileStartsChargingMessage message) { super.dispatchMessage(message); log.info("充电桩主动申请启动充电-业务消息处理:{}",message); // 持久化消息 ChargingPileStartsCharging chargingPileStartsCharging = new ChargingPileStartsCharging(); BeanUtils.copyProperties(message,chargingPileStartsCharging); chargingPileStartsChargingService.create(chargingPileStartsCharging); } } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/ClearOfflineCardReplyMessageListener.java
@@ -19,62 +19,24 @@ messageModel = MessageModel.CLUSTERING, consumerGroup = "charge_clear_offline_card_reply", topic = "charge_clear_offline_card_reply", selectorExpression = "clear_offline_card_reply", consumeThreadMax = 5 //默认是64个线程并发消息,配置 consumeThreadMax 参数指定并发消费线程数,避免太大导致资源不够 selectorExpression = "clear_offline_card_reply" ) public class ClearOfflineCardReplyMessageListener extends EnhanceMessageHandler<ClearOfflineCardReplyMessage> implements RocketMQListener<ClearOfflineCardReplyMessage> { public class ClearOfflineCardReplyMessageListener implements RocketMQListener<ClearOfflineCardReplyMessage> { @Autowired private ClearOfflineCardReplyService clearOfflineCardReplyService; @Override protected void handleMessage(ClearOfflineCardReplyMessage message) throws Exception { // 此时这里才是最终的业务处理,代码只需要处理资源类关闭异常,其他的可以交给父类重试 log.info("离线卡数据清除应答-业务消息处理:{}",message); // 持久化消息 ClearOfflineCardReply clearOfflineCardReply = new ClearOfflineCardReply(); BeanUtils.copyProperties(message,clearOfflineCardReply); clearOfflineCardReplyService.create(clearOfflineCardReply); // 业务处理 } @Override protected void handleMaxRetriesExceeded(ClearOfflineCardReplyMessage message) { // 当超过指定重试次数消息时此处方法会被调用 // 生产中可以进行回退或其他业务操作 log.error("消息消费失败,请执行后续处理"); } /** * 是否执行重试机制 */ @Override protected boolean isRetry() { return true; } @Override protected boolean throwException() { // 是否抛出异常,false搭配retry自行处理异常 return false; } /** * 若需要处理消息过滤,在父级中进行统一处理,或者在此处实现之后,自行处理 * @param message 待处理消息 * @return true: 本次消息被过滤,false:不过滤 */ @Override protected boolean filter(ClearOfflineCardReplyMessage message) { // 此处可做消息过滤 return false; } /** * 监听消费消息,不需要执行业务处理,委派给父类做基础操作,父类做完基础操作后会调用子类的实际处理类型 */ @Override public void onMessage(ClearOfflineCardReplyMessage message) { super.dispatchMessage(message); log.info("离线卡数据清除应答-业务消息处理:{}",message); // 持久化消息 ClearOfflineCardReply clearOfflineCardReply = new ClearOfflineCardReply(); BeanUtils.copyProperties(message,clearOfflineCardReply); clearOfflineCardReplyService.create(clearOfflineCardReply); } } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/EndChargeMessageListener.java
@@ -3,13 +3,17 @@ import com.ruoyi.integration.api.model.EndCharge; import com.ruoyi.integration.api.model.Ping; import com.ruoyi.integration.api.model.Pong; import com.ruoyi.integration.iotda.constant.SendTagConstant; import com.ruoyi.integration.iotda.enums.ServiceIdMenu; import com.ruoyi.integration.iotda.utils.produce.IotMessageProduce; import com.ruoyi.integration.iotda.utils.tools.MessageUtil; import com.ruoyi.integration.mongodb.service.EndChargeService; import com.ruoyi.integration.mongodb.service.PingService; import com.ruoyi.integration.rocket.model.ChargingMessage; import com.ruoyi.integration.rocket.model.ChargingOrderMessage; import com.ruoyi.integration.rocket.model.EndChargeMessage; import com.ruoyi.integration.rocket.model.PingMessage; import com.ruoyi.integration.rocket.produce.EnhanceProduce; import com.ruoyi.integration.rocket.util.EnhanceMessageHandler; import com.ruoyi.order.api.feignClient.ChargingOrderClient; import lombok.extern.slf4j.Slf4j; @@ -28,21 +32,24 @@ messageModel = MessageModel.CLUSTERING, consumerGroup = "charge_end_charge", topic = "charge_end_charge", selectorExpression = "end_charge", consumeThreadMax = 5 //默认是64个线程并发消息,配置 consumeThreadMax 参数指定并发消费线程数,避免太大导致资源不够 selectorExpression = "end_charge" ) public class EndChargeMessageListener extends EnhanceMessageHandler<EndChargeMessage> implements RocketMQListener<EndChargeMessage> { public class EndChargeMessageListener implements RocketMQListener<EndChargeMessage> { @Autowired private EndChargeService endChargeService; @Resource private ChargingOrderClient chargingOrderClient; @Autowired private EnhanceProduce enhanceProduce; /** * 监听消费消息,不需要执行业务处理,委派给父类做基础操作,父类做完基础操作后会调用子类的实际处理类型 */ @Override protected void handleMessage(EndChargeMessage message) throws Exception { // 此时这里才是最终的业务处理,代码只需要处理资源类关闭异常,其他的可以交给父类重试 public void onMessage(EndChargeMessage message) { log.info("充电结束-业务消息处理:{}",message); // 持久化消息 EndCharge endCharge = new EndCharge(); @@ -50,46 +57,19 @@ endChargeService.create(endCharge); // 业务处理 chargingOrderClient.endCharge(endCharge.getTransaction_serial_number()); } @Override protected void handleMaxRetriesExceeded(EndChargeMessage message) { // 当超过指定重试次数消息时此处方法会被调用 // 生产中可以进行回退或其他业务操作 log.error("消息消费失败,请执行后续处理"); } /** * 是否执行重试机制 */ @Override protected boolean isRetry() { return true; } @Override protected boolean throwException() { // 是否抛出异常,false搭配retry自行处理异常 return false; } /** * 若需要处理消息过滤,在父级中进行统一处理,或者在此处实现之后,自行处理 * @param message 待处理消息 * @return true: 本次消息被过滤,false:不过滤 */ @Override protected boolean filter(EndChargeMessage message) { // 此处可做消息过滤 return false; } /** * 监听消费消息,不需要执行业务处理,委派给父类做基础操作,父类做完基础操作后会调用子类的实际处理类型 */ @Override public void onMessage(EndChargeMessage message) { super.dispatchMessage(message); // 订单id String transactionSerialNumber = endCharge.getTransaction_serial_number(); ChargingOrderMessage chargingOrderMessage = new ChargingOrderMessage(); chargingOrderMessage.setOrderNumber(transactionSerialNumber); // 推送充电订单信息 ChargingMessage chargingMessage1 = new ChargingMessage(); chargingMessage1.setServiceId(SendTagConstant.ORDER_INFO); chargingMessage1.setOrderMessage(chargingOrderMessage); enhanceProduce.orderInfoMessage(chargingMessage1); // 推送充电订单状态 ChargingMessage chargingMessage2 = new ChargingMessage(); chargingMessage2.setServiceId(SendTagConstant.ORDER_STATUS); chargingMessage2.setOrderMessage(chargingOrderMessage); enhanceProduce.orderStatusMessage(chargingMessage2); } } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/ErrorMessageMessageListener.java
@@ -17,64 +17,24 @@ messageModel = MessageModel.CLUSTERING, consumerGroup = "charge_error_message", topic = "charge_error_message", selectorExpression = "error_message", consumeThreadMax = 5 //默认是64个线程并发消息,配置 consumeThreadMax 参数指定并发消费线程数,避免太大导致资源不够 selectorExpression = "error_message" ) public class ErrorMessageMessageListener extends EnhanceMessageHandler<ErrorMessageMessage> implements RocketMQListener<ErrorMessageMessage> { public class ErrorMessageMessageListener implements RocketMQListener<ErrorMessageMessage> { @Autowired private ErrorMessageMessageService errorMessageMessageService; @Override protected void handleMessage(ErrorMessageMessage message) throws Exception { // 此时这里才是最终的业务处理,代码只需要处理资源类关闭异常,其他的可以交给父类重试 log.info("错误报文-业务消息处理:{}",message); // 持久化消息 ErrorMessageMessage errorMessageMessage = new ErrorMessageMessage(); BeanUtils.copyProperties(message,errorMessageMessage); errorMessageMessageService.create(errorMessageMessage); // 业务处理 } @Override protected void handleMaxRetriesExceeded(ErrorMessageMessage message) { // 当超过指定重试次数消息时此处方法会被调用 // 生产中可以进行回退或其他业务操作 log.error("消息消费失败,请执行后续处理"); } /** * 是否执行重试机制 */ @Override protected boolean isRetry() { return true; } @Override protected boolean throwException() { // 是否抛出异常,false搭配retry自行处理异常 return false; } /** * 若需要处理消息过滤,在父级中进行统一处理,或者在此处实现之后,自行处理 * @param message 待处理消息 * @return true: 本次消息被过滤,false:不过滤 */ @Override protected boolean filter(ErrorMessageMessage message) { // 此处可做消息过滤 return false; } /** * 监听消费消息,不需要执行业务处理,委派给父类做基础操作,父类做完基础操作后会调用子类的实际处理类型 */ @Override public void onMessage(ErrorMessageMessage message) { super.dispatchMessage(message); log.info("错误报文-业务消息处理:{}",message); // 持久化消息 ErrorMessageMessage errorMessageMessage = new ErrorMessageMessage(); BeanUtils.copyProperties(message,errorMessageMessage); errorMessageMessageService.create(errorMessageMessage); } } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/GroundLockRealTimeDataMessageListener.java
@@ -19,62 +19,24 @@ messageModel = MessageModel.CLUSTERING, consumerGroup = "charge_ground_lock_real_time_data", topic = "charge_ground_lock_real_time_data", selectorExpression = "ground_lock_real_time_data", consumeThreadMax = 5 //默认是64个线程并发消息,配置 consumeThreadMax 参数指定并发消费线程数,避免太大导致资源不够 selectorExpression = "ground_lock_real_time_data" ) public class GroundLockRealTimeDataMessageListener extends EnhanceMessageHandler<GroundLockRealTimeDataMessage> implements RocketMQListener<GroundLockRealTimeDataMessage> { public class GroundLockRealTimeDataMessageListener implements RocketMQListener<GroundLockRealTimeDataMessage> { @Autowired private GroundLockRealTimeDataService groundLockRealTimeDataService; @Override protected void handleMessage(GroundLockRealTimeDataMessage message) throws Exception { // 此时这里才是最终的业务处理,代码只需要处理资源类关闭异常,其他的可以交给父类重试 log.info("地锁数据上送(充电桩上送)-业务消息处理:{}",message); // 持久化消息 GroundLockRealTimeData groundLockRealTimeData = new GroundLockRealTimeData(); BeanUtils.copyProperties(message,groundLockRealTimeData); groundLockRealTimeDataService.create(groundLockRealTimeData); // 业务处理 } @Override protected void handleMaxRetriesExceeded(GroundLockRealTimeDataMessage message) { // 当超过指定重试次数消息时此处方法会被调用 // 生产中可以进行回退或其他业务操作 log.error("消息消费失败,请执行后续处理"); } /** * 是否执行重试机制 */ @Override protected boolean isRetry() { return true; } @Override protected boolean throwException() { // 是否抛出异常,false搭配retry自行处理异常 return false; } /** * 若需要处理消息过滤,在父级中进行统一处理,或者在此处实现之后,自行处理 * @param message 待处理消息 * @return true: 本次消息被过滤,false:不过滤 */ @Override protected boolean filter(GroundLockRealTimeDataMessage message) { // 此处可做消息过滤 return false; } /** * 监听消费消息,不需要执行业务处理,委派给父类做基础操作,父类做完基础操作后会调用子类的实际处理类型 */ @Override public void onMessage(GroundLockRealTimeDataMessage message) { super.dispatchMessage(message); log.info("地锁数据上送(充电桩上送)-业务消息处理:{}",message); // 持久化消息 GroundLockRealTimeData groundLockRealTimeData = new GroundLockRealTimeData(); BeanUtils.copyProperties(message,groundLockRealTimeData); groundLockRealTimeDataService.create(groundLockRealTimeData); } } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/MotorAbortMessageListener.java
@@ -22,10 +22,9 @@ messageModel = MessageModel.CLUSTERING, consumerGroup = "charge_motor_abort", topic = "charge_motor_abort", selectorExpression = "motor_abort", consumeThreadMax = 5 //默认是64个线程并发消息,配置 consumeThreadMax 参数指定并发消费线程数,避免太大导致资源不够 selectorExpression = "motor_abort" ) public class MotorAbortMessageListener extends EnhanceMessageHandler<MotorAbortMessage> implements RocketMQListener<MotorAbortMessage> { public class MotorAbortMessageListener implements RocketMQListener<MotorAbortMessage> { @Autowired private MotorAbortService motorAbortService; @@ -34,11 +33,11 @@ private ChargingOrderClient chargingOrderClient; /** * 监听消费消息,不需要执行业务处理,委派给父类做基础操作,父类做完基础操作后会调用子类的实际处理类型 */ @Override protected void handleMessage(MotorAbortMessage message) throws Exception { // 此时这里才是最终的业务处理,代码只需要处理资源类关闭异常,其他的可以交给父类重试 public void onMessage(MotorAbortMessage message) { log.info("充电阶段充电机中止-业务消息处理:{}",message); // 持久化消息 MotorAbort motorAbort = new MotorAbort(); @@ -46,46 +45,5 @@ motorAbortService.create(motorAbort); // 业务处理 chargingOrderClient.excelEndCharge(motorAbort.getTransaction_serial_number()); } @Override protected void handleMaxRetriesExceeded(MotorAbortMessage message) { // 当超过指定重试次数消息时此处方法会被调用 // 生产中可以进行回退或其他业务操作 log.error("消息消费失败,请执行后续处理"); } /** * 是否执行重试机制 */ @Override protected boolean isRetry() { return true; } @Override protected boolean throwException() { // 是否抛出异常,false搭配retry自行处理异常 return false; } /** * 若需要处理消息过滤,在父级中进行统一处理,或者在此处实现之后,自行处理 * @param message 待处理消息 * @return true: 本次消息被过滤,false:不过滤 */ @Override protected boolean filter(MotorAbortMessage message) { // 此处可做消息过滤 return false; } /** * 监听消费消息,不需要执行业务处理,委派给父类做基础操作,父类做完基础操作后会调用子类的实际处理类型 */ @Override public void onMessage(MotorAbortMessage message) { super.dispatchMessage(message); } } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/OnlineMessageListener.java
@@ -1,5 +1,6 @@ package com.ruoyi.integration.rocket.listener; import com.alibaba.fastjson.JSON; import com.ruoyi.integration.api.model.Online; import com.ruoyi.integration.mongodb.service.OnlineService; import com.ruoyi.integration.rocket.model.OnlineMessage; @@ -16,63 +17,22 @@ @RocketMQMessageListener( consumerGroup = "charge_online", topic = "charge_online", selectorExpression = "online", // 明确指定标签 consumeThreadMax = 5 //默认是64个线程并发消息,配置 consumeThreadMax 参数指定并发消费线程数,避免太大导致资源不够 selectorExpression = "online" ) public class OnlineMessageListener extends EnhanceMessageHandler<OnlineMessage> implements RocketMQListener<OnlineMessage> { public class OnlineMessageListener implements RocketMQListener<OnlineMessage> { @Autowired private OnlineService onlineService; @Override protected void handleMessage(OnlineMessage message) throws Exception { // 此时这里才是最终的业务处理,代码只需要处理资源类关闭异常,其他的可以交给父类重试 log.info("充电桩登录认证业务消息处理:{}",message); // 持久化消息 Online online = new Online(); BeanUtils.copyProperties(message,online); onlineService.create(online); // 业务处理 } @Override protected void handleMaxRetriesExceeded(OnlineMessage message) { // 当超过指定重试次数消息时此处方法会被调用 // 生产中可以进行回退或其他业务操作 log.error("消息消费失败,请执行后续处理"); } /** * 是否执行重试机制 */ @Override protected boolean isRetry() { return true; } @Override protected boolean throwException() { // 是否抛出异常,false搭配retry自行处理异常 return false; } /** * 若需要处理消息过滤,在父级中进行统一处理,或者在此处实现之后,自行处理 * @param message 待处理消息 * @return true: 本次消息被过滤,false:不过滤 */ @Override protected boolean filter(OnlineMessage message) { // 此处可做消息过滤 return false; } /** * 监听消费消息,不需要执行业务处理,委派给父类做基础操作,父类做完基础操作后会调用子类的实际处理类型 */ @Override public void onMessage(OnlineMessage message) { super.dispatchMessage(message); log.info("充电桩登录认证业务消息处理:{}", JSON.toJSONString(message)); // 持久化消息 Online online = new Online(); BeanUtils.copyProperties(message,online); onlineService.create(online); } } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/ParameterSettingMessageListener.java
@@ -17,65 +17,26 @@ @Component @RocketMQMessageListener( messageModel = MessageModel.CLUSTERING, consumerGroup = "enhance_consumer_group", topic = "rocket_enhance", selectorExpression = "*", consumeThreadMax = 5 //默认是64个线程并发消息,配置 consumeThreadMax 参数指定并发消费线程数,避免太大导致资源不够 consumerGroup = "charge_parameter_setting", topic = "charge_parameter_setting", selectorExpression = "parameter_setting" ) public class ParameterSettingMessageListener extends EnhanceMessageHandler<ParameterSettingMessage> implements RocketMQListener<ParameterSettingMessage> { public class ParameterSettingMessageListener implements RocketMQListener<ParameterSettingMessage> { @Autowired private ParameterSettingService parameterSettingService; @Override protected void handleMessage(ParameterSettingMessage message) throws Exception { // 此时这里才是最终的业务处理,代码只需要处理资源类关闭异常,其他的可以交给父类重试 log.info("业务消息处理:{}",message); // 持久化消息 ParameterSetting parameterSetting = new ParameterSetting(); BeanUtils.copyProperties(message,parameterSetting); parameterSettingService.create(parameterSetting); // 业务处理 } @Override protected void handleMaxRetriesExceeded(ParameterSettingMessage message) { // 当超过指定重试次数消息时此处方法会被调用 // 生产中可以进行回退或其他业务操作 log.error("消息消费失败,请执行后续处理"); } /** * 是否执行重试机制 */ @Override protected boolean isRetry() { return true; } @Override protected boolean throwException() { // 是否抛出异常,false搭配retry自行处理异常 return false; } /** * 若需要处理消息过滤,在父级中进行统一处理,或者在此处实现之后,自行处理 * @param message 待处理消息 * @return true: 本次消息被过滤,false:不过滤 */ @Override protected boolean filter(ParameterSettingMessage message) { // 此处可做消息过滤 return false; } /** * 监听消费消息,不需要执行业务处理,委派给父类做基础操作,父类做完基础操作后会调用子类的实际处理类型 */ @Override public void onMessage(ParameterSettingMessage message) { super.dispatchMessage(message); log.info("参数配置-业务消息处理:{}",message); // 持久化消息 ParameterSetting parameterSetting = new ParameterSetting(); BeanUtils.copyProperties(message,parameterSetting); parameterSettingService.create(parameterSetting); } } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/PingMessageListener.java
@@ -1,18 +1,30 @@ package com.ruoyi.integration.rocket.listener; import com.alibaba.fastjson2.JSON; import com.ruoyi.chargingPile.api.feignClient.ChargingPileClient; import com.ruoyi.chargingPile.api.vo.UpdateChargingPileStatusVo; import com.ruoyi.integration.api.model.Ping; import com.ruoyi.integration.iotda.constant.SendTagConstant; import com.ruoyi.integration.mongodb.service.PingService; import com.ruoyi.integration.rocket.model.ChargingMessage; import com.ruoyi.integration.rocket.model.GunStatusMessage; import com.ruoyi.integration.rocket.model.OnlineMessage; import com.ruoyi.integration.rocket.model.PingMessage; import com.ruoyi.integration.rocket.produce.EnhanceProduce; import com.ruoyi.integration.rocket.util.EnhanceMessageHandler; import lombok.extern.slf4j.Slf4j; import org.apache.rocketmq.client.consumer.listener.MessageListener; import org.apache.rocketmq.client.producer.SendResult; import org.apache.rocketmq.spring.annotation.MessageModel; import org.apache.rocketmq.spring.annotation.RocketMQMessageListener; import org.apache.rocketmq.spring.core.RocketMQListener; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.concurrent.TimeUnit; @Slf4j @Component @@ -20,62 +32,47 @@ messageModel = MessageModel.CLUSTERING, consumerGroup = "charge_ping", topic = "charge_ping", selectorExpression = "ping", consumeThreadMax = 5 //默认是64个线程并发消息,配置 consumeThreadMax 参数指定并发消费线程数,避免太大导致资源不够 selectorExpression = "ping" ) public class PingMessageListener extends EnhanceMessageHandler<PingMessage> implements RocketMQListener<PingMessage> { public class PingMessageListener implements RocketMQListener<PingMessage> { @Autowired private PingService pingService; @Override protected void handleMessage(PingMessage message) throws Exception { // 此时这里才是最终的业务处理,代码只需要处理资源类关闭异常,其他的可以交给父类重试 log.info("充电桩心跳包-业务消息处理:{}",message); // 持久化消息 Ping ping = new Ping(); BeanUtils.copyProperties(message,ping); pingService.create(ping); // 业务处理 } @Override protected void handleMaxRetriesExceeded(PingMessage message) { // 当超过指定重试次数消息时此处方法会被调用 // 生产中可以进行回退或其他业务操作 log.error("消息消费失败,请执行后续处理"); } /** * 是否执行重试机制 */ @Override protected boolean isRetry() { return true; } @Override protected boolean throwException() { // 是否抛出异常,false搭配retry自行处理异常 return false; } /** * 若需要处理消息过滤,在父级中进行统一处理,或者在此处实现之后,自行处理 * @param message 待处理消息 * @return true: 本次消息被过滤,false:不过滤 */ @Override protected boolean filter(PingMessage message) { // 此处可做消息过滤 return false; } @Resource private RedisTemplate redisTemplate; @Autowired private EnhanceProduce enhanceProduce; @Resource private ChargingPileClient chargingPileClient; /** * 监听消费消息,不需要执行业务处理,委派给父类做基础操作,父类做完基础操作后会调用子类的实际处理类型 */ @Override public void onMessage(PingMessage message) { super.dispatchMessage(message); log.info("充电桩心跳包-业务消息处理:{}", JSON.toJSONString(message)); // 持久化消息 Ping ping = new Ping(); BeanUtils.copyProperties(message,ping); pingService.save(ping); //存储缓存中,5分钟有效 redisTemplate.opsForValue().set("ping:" + ping.getCharging_pile_code() + ping.getCharging_gun_code(), ping, 5, TimeUnit.MINUTES); UpdateChargingPileStatusVo vo1 = new UpdateChargingPileStatusVo(); vo1.setGun_code(message.getCharging_gun_code()); vo1.setPile_code(message.getCharging_pile_code()); vo1.setStatus(message.getCharging_gun_status()); chargingPileClient.updateChargingPileStatus(vo1); // 监管平台推送充电设备状态 SendResult sendResult; String gunCode = message.getCharging_pile_code() + message.getCharging_gun_code(); ChargingMessage chargingMessage = new ChargingMessage(); chargingMessage.setServiceId(SendTagConstant.GUN_STATUS); GunStatusMessage gunStatusMessage = new GunStatusMessage(); gunStatusMessage.setFullNumber(gunCode); chargingMessage.setGunStatusMessage(gunStatusMessage); sendResult = enhanceProduce.gunStatusMessage(chargingMessage); } } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/PlatformRemoteUpdateReplyMessageListener.java
@@ -1,6 +1,7 @@ package com.ruoyi.integration.rocket.listener; import com.ruoyi.integration.api.model.Online; import com.ruoyi.integration.api.model.ParameterSetting; import com.ruoyi.integration.api.model.PlatformRemoteUpdateReply; import com.ruoyi.integration.mongodb.service.PlatformRemoteUpdateReplyService; import com.ruoyi.integration.rocket.model.PlatformRemoteUpdateReplyMessage; @@ -19,63 +20,23 @@ messageModel = MessageModel.CLUSTERING, consumerGroup = "charge_platform_remote_update_reply", topic = "charge_platform_remote_update_reply", selectorExpression = "platform_remote_update_reply", consumeThreadMax = 5 //默认是64个线程并发消息,配置 consumeThreadMax 参数指定并发消费线程数,避免太大导致资源不够 selectorExpression = "platform_remote_update_reply" ) public class PlatformRemoteUpdateReplyMessageListener extends EnhanceMessageHandler<PlatformRemoteUpdateReplyMessage> implements RocketMQListener<PlatformRemoteUpdateReplyMessage> { public class PlatformRemoteUpdateReplyMessageListener implements RocketMQListener<PlatformRemoteUpdateReplyMessage> { @Autowired private PlatformRemoteUpdateReplyService platformRemoteUpdateReplyService; @Override protected void handleMessage(PlatformRemoteUpdateReplyMessage message) throws Exception { // 此时这里才是最终的业务处理,代码只需要处理资源类关闭异常,其他的可以交给父类重试 log.info("远程更新应答-业务消息处理:{}",message); // 持久化消息 PlatformRemoteUpdateReply platformRemoteUpdateReply = new PlatformRemoteUpdateReply(); BeanUtils.copyProperties(message,platformRemoteUpdateReply); platformRemoteUpdateReplyService.create(platformRemoteUpdateReply); // 业务处理 } @Override protected void handleMaxRetriesExceeded(PlatformRemoteUpdateReplyMessage message) { // 当超过指定重试次数消息时此处方法会被调用 // 生产中可以进行回退或其他业务操作 log.error("消息消费失败,请执行后续处理"); } /** * 是否执行重试机制 */ @Override protected boolean isRetry() { return true; } @Override protected boolean throwException() { // 是否抛出异常,false搭配retry自行处理异常 return false; } /** * 若需要处理消息过滤,在父级中进行统一处理,或者在此处实现之后,自行处理 * @param message 待处理消息 * @return true: 本次消息被过滤,false:不过滤 */ @Override protected boolean filter(PlatformRemoteUpdateReplyMessage message) { // 此处可做消息过滤 return false; } /** * 监听消费消息,不需要执行业务处理,委派给父类做基础操作,父类做完基础操作后会调用子类的实际处理类型 */ @Override public void onMessage(PlatformRemoteUpdateReplyMessage message) { super.dispatchMessage(message); log.info("业务消息处理:{}",message); // 持久化消息 PlatformRemoteUpdateReply platformRemoteUpdateReply = new PlatformRemoteUpdateReply(); BeanUtils.copyProperties(message,platformRemoteUpdateReply); platformRemoteUpdateReplyService.create(platformRemoteUpdateReply); } } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/PlatformRestartReplyMessageListener.java
@@ -19,63 +19,24 @@ messageModel = MessageModel.CLUSTERING, consumerGroup = "charge_platform_restart_reply", topic = "charge_platform_restart_reply", selectorExpression = "platform_restart_reply", consumeThreadMax = 5 //默认是64个线程并发消息,配置 consumeThreadMax 参数指定并发消费线程数,避免太大导致资源不够 selectorExpression = "platform_restart_reply" ) public class PlatformRestartReplyMessageListener extends EnhanceMessageHandler<PlatformRestartReplyMessage> implements RocketMQListener<PlatformRestartReplyMessage> { public class PlatformRestartReplyMessageListener implements RocketMQListener<PlatformRestartReplyMessage> { @Autowired private PlatformRestartReplyService platformRestartReplyService; @Override protected void handleMessage(PlatformRestartReplyMessage message) throws Exception { // 此时这里才是最终的业务处理,代码只需要处理资源类关闭异常,其他的可以交给父类重试 log.info("远程重启应答-业务消息处理:{}",message); // 持久化消息 PlatformRestartReply platformRestartReply = new PlatformRestartReply(); BeanUtils.copyProperties(message,platformRestartReply); platformRestartReplyService.create(platformRestartReply); // 业务处理 } @Override protected void handleMaxRetriesExceeded(PlatformRestartReplyMessage message) { // 当超过指定重试次数消息时此处方法会被调用 // 生产中可以进行回退或其他业务操作 log.error("消息消费失败,请执行后续处理"); } /** * 是否执行重试机制 */ @Override protected boolean isRetry() { return true; } @Override protected boolean throwException() { // 是否抛出异常,false搭配retry自行处理异常 return false; } /** * 若需要处理消息过滤,在父级中进行统一处理,或者在此处实现之后,自行处理 * @param message 待处理消息 * @return true: 本次消息被过滤,false:不过滤 */ @Override protected boolean filter(PlatformRestartReplyMessage message) { // 此处可做消息过滤 return false; } /** * 监听消费消息,不需要执行业务处理,委派给父类做基础操作,父类做完基础操作后会调用子类的实际处理类型 */ @Override public void onMessage(PlatformRestartReplyMessage message) { super.dispatchMessage(message); log.info("远程重启应答-业务消息处理:{}",message); // 持久化消息 PlatformRestartReply platformRestartReply = new PlatformRestartReply(); BeanUtils.copyProperties(message,platformRestartReply); platformRestartReplyService.create(platformRestartReply); } } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/PlatformStartChargingReplyMessageListener.java
@@ -23,10 +23,9 @@ messageModel = MessageModel.CLUSTERING, consumerGroup = "charge_platform_start_charging_reply", topic = "charge_platform_start_charging_reply", selectorExpression = "platform_start_charging_reply", consumeThreadMax = 5 //默认是64个线程并发消息,配置 consumeThreadMax 参数指定并发消费线程数,避免太大导致资源不够 selectorExpression = "platform_start_charging_reply" ) public class PlatformStartChargingReplyMessageListener extends EnhanceMessageHandler<PlatformStartChargingReplyMessage> implements RocketMQListener<PlatformStartChargingReplyMessage> { public class PlatformStartChargingReplyMessageListener implements RocketMQListener<PlatformStartChargingReplyMessage> { @Autowired private PlatformStartChargingReplyService platformStartChargingReplyService; @@ -36,58 +35,20 @@ @Override protected void handleMessage(PlatformStartChargingReplyMessage message) throws Exception { // 此时这里才是最终的业务处理,代码只需要处理资源类关闭异常,其他的可以交给父类重试 log.info("远程启机命令回复-业务消息处理:{}",message); // 持久化消息 PlatformStartChargingReply platformStartChargingReply = new PlatformStartChargingReply(); BeanUtils.copyProperties(message,platformStartChargingReply); platformStartChargingReplyService.create(platformStartChargingReply); // 业务处理 PlatformStartChargingReplyMessageVO message1 = new PlatformStartChargingReplyMessageVO(); BeanUtils.copyProperties(message, message1); chargingOrderClient.startChargeSuccessfully(message1); } @Override protected void handleMaxRetriesExceeded(PlatformStartChargingReplyMessage message) { // 当超过指定重试次数消息时此处方法会被调用 // 生产中可以进行回退或其他业务操作 log.error("消息消费失败,请执行后续处理"); } /** * 是否执行重试机制 */ @Override protected boolean isRetry() { return true; } @Override protected boolean throwException() { // 是否抛出异常,false搭配retry自行处理异常 return false; } /** * 若需要处理消息过滤,在父级中进行统一处理,或者在此处实现之后,自行处理 * @param message 待处理消息 * @return true: 本次消息被过滤,false:不过滤 */ @Override protected boolean filter(PlatformStartChargingReplyMessage message) { // 此处可做消息过滤 return false; } /** * 监听消费消息,不需要执行业务处理,委派给父类做基础操作,父类做完基础操作后会调用子类的实际处理类型 */ @Override public void onMessage(PlatformStartChargingReplyMessage message) { super.dispatchMessage(message); log.info("远程启机命令回复-业务消息处理:{}",message); // 持久化消息 PlatformStartChargingReply platformStartChargingReply = new PlatformStartChargingReply(); BeanUtils.copyProperties(message,platformStartChargingReply); platformStartChargingReplyService.create(platformStartChargingReply); // 业务处理 PlatformStartChargingReplyMessageVO message1 = new PlatformStartChargingReplyMessageVO(); BeanUtils.copyProperties(message, message1); chargingOrderClient.startChargeSuccessfully(message1); } } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/PlatformStopChargingReplyMessageListener.java
@@ -5,6 +5,8 @@ import com.ruoyi.integration.mongodb.service.PlatformStopChargingReplyService; import com.ruoyi.integration.rocket.model.PlatformStopChargingReplyMessage; import com.ruoyi.integration.rocket.util.EnhanceMessageHandler; import com.ruoyi.order.api.feignClient.ChargingOrderClient; import com.ruoyi.order.api.vo.PlatformStopChargingReplyVO; import lombok.extern.slf4j.Slf4j; import org.apache.rocketmq.spring.annotation.MessageModel; import org.apache.rocketmq.spring.annotation.RocketMQMessageListener; @@ -13,68 +15,37 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import javax.annotation.Resource; @Slf4j @Component @RocketMQMessageListener( messageModel = MessageModel.CLUSTERING, consumerGroup = "charge_platform_stop_charging_reply", topic = "charge_platform_stop_charging_reply", selectorExpression = "platform_stop_charging_reply", consumeThreadMax = 5 //默认是64个线程并发消息,配置 consumeThreadMax 参数指定并发消费线程数,避免太大导致资源不够 selectorExpression = "platform_stop_charging_reply" ) public class PlatformStopChargingReplyMessageListener extends EnhanceMessageHandler<PlatformStopChargingReplyMessage> implements RocketMQListener<PlatformStopChargingReplyMessage> { public class PlatformStopChargingReplyMessageListener implements RocketMQListener<PlatformStopChargingReplyMessage> { @Autowired private PlatformStopChargingReplyService platformStopChargingReplyService; @Override protected void handleMessage(PlatformStopChargingReplyMessage message) throws Exception { // 此时这里才是最终的业务处理,代码只需要处理资源类关闭异常,其他的可以交给父类重试 log.info("远程停机命令回复-业务消息处理:{}",message); // 持久化消息 PlatformStopChargingReply platformStopChargingReply = new PlatformStopChargingReply(); BeanUtils.copyProperties(message,platformStopChargingReply); platformStopChargingReplyService.create(platformStopChargingReply); // 业务处理 } @Override protected void handleMaxRetriesExceeded(PlatformStopChargingReplyMessage message) { // 当超过指定重试次数消息时此处方法会被调用 // 生产中可以进行回退或其他业务操作 log.error("消息消费失败,请执行后续处理"); } /** * 是否执行重试机制 */ @Override protected boolean isRetry() { return true; } @Override protected boolean throwException() { // 是否抛出异常,false搭配retry自行处理异常 return false; } /** * 若需要处理消息过滤,在父级中进行统一处理,或者在此处实现之后,自行处理 * @param message 待处理消息 * @return true: 本次消息被过滤,false:不过滤 */ @Override protected boolean filter(PlatformStopChargingReplyMessage message) { // 此处可做消息过滤 return false; } @Resource private ChargingOrderClient chargingOrderClient; /** * 监听消费消息,不需要执行业务处理,委派给父类做基础操作,父类做完基础操作后会调用子类的实际处理类型 */ @Override public void onMessage(PlatformStopChargingReplyMessage message) { super.dispatchMessage(message); log.info("远程停机命令回复-业务消息处理:{}",message); // 持久化消息 PlatformStopChargingReply platformStopChargingReply = new PlatformStopChargingReply(); BeanUtils.copyProperties(message,platformStopChargingReply); platformStopChargingReplyService.create(platformStopChargingReply); PlatformStopChargingReplyVO platformStopChargingReply1 = new PlatformStopChargingReplyVO(); BeanUtils.copyProperties(platformStopChargingReply, platformStopChargingReply1); chargingOrderClient.terminateSuccessfulResponse(platformStopChargingReply1); } } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/QrCodeDeliveryReplyMessageListener.java
New file @@ -0,0 +1,40 @@ package com.ruoyi.integration.rocket.listener; import com.ruoyi.integration.api.model.QrCodeDeliveryReply; import com.ruoyi.integration.mongodb.service.QrCodeDeliveryReplyService; import com.ruoyi.integration.rocket.model.AcquisitionBillingModeMessage; import com.ruoyi.integration.rocket.model.QrCodeDeliveryReplyMessage; import lombok.extern.slf4j.Slf4j; import org.apache.rocketmq.spring.annotation.MessageModel; import org.apache.rocketmq.spring.annotation.RocketMQMessageListener; import org.apache.rocketmq.spring.core.RocketMQListener; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** * @author zhibing.pu * @Date 2025/4/28 14:57 */ @Slf4j @Component @RocketMQMessageListener( messageModel = MessageModel.CLUSTERING, consumerGroup = "charge_qr_code_delivery_reply", topic = "charge_qr_code_delivery_reply", selectorExpression = "qr_code_delivery_reply" ) public class QrCodeDeliveryReplyMessageListener implements RocketMQListener<QrCodeDeliveryReplyMessage> { @Autowired private QrCodeDeliveryReplyService qrCodeDeliveryReplyService; @Override public void onMessage(QrCodeDeliveryReplyMessage message) { log.info("二维码下发应答-业务消息处理:{}",message); QrCodeDeliveryReply qrCodeDeliveryReply = new QrCodeDeliveryReply(); BeanUtils.copyProperties(message,qrCodeDeliveryReply); qrCodeDeliveryReplyService.create(qrCodeDeliveryReply); } } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/QueryOfflineCardReplyMessageListener.java
@@ -1,10 +1,13 @@ package com.ruoyi.integration.rocket.listener; import com.ruoyi.integration.api.model.Online; import com.ruoyi.integration.api.model.PlatformRemoteUpdateReply; import com.ruoyi.integration.api.model.PlatformStopChargingReply; import com.ruoyi.integration.api.model.QueryOfflineCardReply; import com.ruoyi.integration.mongodb.service.QueryOfflineCardReplyService; import com.ruoyi.integration.rocket.model.QueryOfflineCardReplyMessage; import com.ruoyi.integration.rocket.util.EnhanceMessageHandler; import com.ruoyi.order.api.vo.PlatformStopChargingReplyVO; import lombok.extern.slf4j.Slf4j; import org.apache.rocketmq.spring.annotation.MessageModel; import org.apache.rocketmq.spring.annotation.RocketMQMessageListener; @@ -17,64 +20,27 @@ @Component @RocketMQMessageListener( messageModel = MessageModel.CLUSTERING, consumerGroup = "enhance_consumer_group", topic = "rocket_enhance", selectorExpression = "*", consumeThreadMax = 5 //默认是64个线程并发消息,配置 consumeThreadMax 参数指定并发消费线程数,避免太大导致资源不够 consumerGroup = "charge_query_offline_card_reply", topic = "charge_query_offline_card_reply", selectorExpression = "query_offline_card_reply" ) public class QueryOfflineCardReplyMessageListener extends EnhanceMessageHandler<QueryOfflineCardReplyMessage> implements RocketMQListener<QueryOfflineCardReplyMessage> { public class QueryOfflineCardReplyMessageListener implements RocketMQListener<QueryOfflineCardReplyMessage> { @Autowired private QueryOfflineCardReplyService queryOfflineCardReplyService; @Override protected void handleMessage(QueryOfflineCardReplyMessage message) throws Exception { // 此时这里才是最终的业务处理,代码只需要处理资源类关闭异常,其他的可以交给父类重试 log.info("离线卡数据查询应答-业务消息处理:{}",message); // 持久化消息 QueryOfflineCardReply queryOfflineCardReply = new QueryOfflineCardReply(); BeanUtils.copyProperties(message,queryOfflineCardReply); queryOfflineCardReplyService.create(queryOfflineCardReply); // 业务处理 } @Override protected void handleMaxRetriesExceeded(QueryOfflineCardReplyMessage message) { // 当超过指定重试次数消息时此处方法会被调用 // 生产中可以进行回退或其他业务操作 log.error("消息消费失败,请执行后续处理"); } /** * 是否执行重试机制 */ @Override protected boolean isRetry() { return true; } @Override protected boolean throwException() { // 是否抛出异常,false搭配retry自行处理异常 return false; } /** * 若需要处理消息过滤,在父级中进行统一处理,或者在此处实现之后,自行处理 * @param message 待处理消息 * @return true: 本次消息被过滤,false:不过滤 */ @Override protected boolean filter(QueryOfflineCardReplyMessage message) { // 此处可做消息过滤 return false; } /** * 监听消费消息,不需要执行业务处理,委派给父类做基础操作,父类做完基础操作后会调用子类的实际处理类型 */ @Override public void onMessage(QueryOfflineCardReplyMessage message) { super.dispatchMessage(message); log.info("业务消息处理:{}",message); // 持久化消息 QueryOfflineCardReply queryOfflineCardReply = new QueryOfflineCardReply(); BeanUtils.copyProperties(message,queryOfflineCardReply); queryOfflineCardReplyService.create(queryOfflineCardReply); } } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/SecurityDetectionMessageListener.java
New file @@ -0,0 +1,50 @@ package com.ruoyi.integration.rocket.listener; import com.ruoyi.integration.api.model.SecurityDetection; import com.ruoyi.integration.mongodb.service.SecurityDetectionService; import com.ruoyi.integration.rocket.model.AcquisitionBillingModeMessage; import com.ruoyi.integration.rocket.model.SecurityDetectionMessage; import com.ruoyi.order.api.feignClient.ChargingOrderClient; import com.ruoyi.order.api.vo.SecurityDetectionVO; import lombok.extern.slf4j.Slf4j; import org.apache.rocketmq.spring.annotation.MessageModel; import org.apache.rocketmq.spring.annotation.RocketMQMessageListener; import org.apache.rocketmq.spring.core.RocketMQListener; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import javax.annotation.Resource; /** * @author zhibing.pu * @Date 2025/4/28 14:59 */ @Slf4j @Component @RocketMQMessageListener( messageModel = MessageModel.CLUSTERING, consumerGroup = "charge_security_detection", topic = "charge_security_detection", selectorExpression = "security_detection" ) public class SecurityDetectionMessageListener implements RocketMQListener<SecurityDetectionMessage> { @Resource private ChargingOrderClient chargingOrderClient; @Autowired private SecurityDetectionService securityDetectionService; @Override public void onMessage(SecurityDetectionMessage message) { log.info("安全监测-业务消息处理:{}",message); SecurityDetection securityDetection = new SecurityDetection(); BeanUtils.copyProperties(message,securityDetection); securityDetectionService.create(securityDetection); SecurityDetectionVO securityDetection1 = new SecurityDetectionVO(); BeanUtils.copyProperties(securityDetection, securityDetection1); chargingOrderClient.securityDetection(securityDetection1); } } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/SetupBillingModelReplyMessageListener.java
@@ -19,63 +19,24 @@ messageModel = MessageModel.CLUSTERING, consumerGroup = "charge_setup_billing_model_reply", topic = "charge_setup_billing_model_reply", selectorExpression = "setup_billing_model_reply", consumeThreadMax = 5 //默认是64个线程并发消息,配置 consumeThreadMax 参数指定并发消费线程数,避免太大导致资源不够 selectorExpression = "setup_billing_model_reply" ) public class SetupBillingModelReplyMessageListener extends EnhanceMessageHandler<SetupBillingModelReplyMessage> implements RocketMQListener<SetupBillingModelReplyMessage> { public class SetupBillingModelReplyMessageListener implements RocketMQListener<SetupBillingModelReplyMessage> { @Autowired private SetupBillingModelReplyService setupBillingModelReplyService; @Override protected void handleMessage(SetupBillingModelReplyMessage message) throws Exception { // 此时这里才是最终的业务处理,代码只需要处理资源类关闭异常,其他的可以交给父类重试 log.info("计费模型应答-业务消息处理:{}",message); // 持久化消息 SetupBillingModelReply setupBillingModelReply = new SetupBillingModelReply(); BeanUtils.copyProperties(message,setupBillingModelReply); setupBillingModelReplyService.create(setupBillingModelReply); // 业务处理 } @Override protected void handleMaxRetriesExceeded(SetupBillingModelReplyMessage message) { // 当超过指定重试次数消息时此处方法会被调用 // 生产中可以进行回退或其他业务操作 log.error("消息消费失败,请执行后续处理"); } /** * 是否执行重试机制 */ @Override protected boolean isRetry() { return true; } @Override protected boolean throwException() { // 是否抛出异常,false搭配retry自行处理异常 return false; } /** * 若需要处理消息过滤,在父级中进行统一处理,或者在此处实现之后,自行处理 * @param message 待处理消息 * @return true: 本次消息被过滤,false:不过滤 */ @Override protected boolean filter(SetupBillingModelReplyMessage message) { // 此处可做消息过滤 return false; } /** * 监听消费消息,不需要执行业务处理,委派给父类做基础操作,父类做完基础操作后会调用子类的实际处理类型 */ @Override public void onMessage(SetupBillingModelReplyMessage message) { super.dispatchMessage(message); log.info("计费模型应答-业务消息处理:{}",message); // 持久化消息 SetupBillingModelReply setupBillingModelReply = new SetupBillingModelReply(); BeanUtils.copyProperties(message,setupBillingModelReply); setupBillingModelReplyService.create(setupBillingModelReply); } } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/SynchronizeOfflineCardReplyMessageListener.java
@@ -19,62 +19,25 @@ messageModel = MessageModel.CLUSTERING, consumerGroup = "charge_synchronize_offline_card_reply", topic = "charge_synchronize_offline_card_reply", selectorExpression = "synchronize_offline_card_reply", consumeThreadMax = 5 //默认是64个线程并发消息,配置 consumeThreadMax 参数指定并发消费线程数,避免太大导致资源不够 selectorExpression = "synchronize_offline_card_reply" ) public class SynchronizeOfflineCardReplyMessageListener extends EnhanceMessageHandler<SynchronizeOfflineCardReplyMessage> implements RocketMQListener<SynchronizeOfflineCardReplyMessage> { public class SynchronizeOfflineCardReplyMessageListener implements RocketMQListener<SynchronizeOfflineCardReplyMessage> { @Autowired private SynchronizeOfflineCardReplyService synchronizeOfflineCardReplyService; @Override protected void handleMessage(SynchronizeOfflineCardReplyMessage message) throws Exception { // 此时这里才是最终的业务处理,代码只需要处理资源类关闭异常,其他的可以交给父类重试 log.info("卡数据同步应答-业务消息处理:{}",message); // 持久化消息 SynchronizeOfflineCardReply synchronizeOfflineCardReply = new SynchronizeOfflineCardReply(); BeanUtils.copyProperties(message,synchronizeOfflineCardReply); synchronizeOfflineCardReplyService.create(synchronizeOfflineCardReply); // 业务处理 } @Override protected void handleMaxRetriesExceeded(SynchronizeOfflineCardReplyMessage message) { // 当超过指定重试次数消息时此处方法会被调用 // 生产中可以进行回退或其他业务操作 log.error("消息消费失败,请执行后续处理"); } /** * 是否执行重试机制 */ @Override protected boolean isRetry() { return true; } @Override protected boolean throwException() { // 是否抛出异常,false搭配retry自行处理异常 return false; } /** * 若需要处理消息过滤,在父级中进行统一处理,或者在此处实现之后,自行处理 * @param message 待处理消息 * @return true: 本次消息被过滤,false:不过滤 */ @Override protected boolean filter(SynchronizeOfflineCardReplyMessage message) { // 此处可做消息过滤 return false; } /** * 监听消费消息,不需要执行业务处理,委派给父类做基础操作,父类做完基础操作后会调用子类的实际处理类型 */ @Override public void onMessage(SynchronizeOfflineCardReplyMessage message) { super.dispatchMessage(message); log.info("卡数据同步应答-业务消息处理:{}",message); // 持久化消息 SynchronizeOfflineCardReply synchronizeOfflineCardReply = new SynchronizeOfflineCardReply(); BeanUtils.copyProperties(message,synchronizeOfflineCardReply); synchronizeOfflineCardReplyService.create(synchronizeOfflineCardReply); } } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/TimingSettingMessageListener.java
@@ -26,62 +26,24 @@ messageModel = MessageModel.CLUSTERING, consumerGroup = "charge_timing_setting", topic = "charge_timing_setting", selectorExpression = "timing_setting", consumeThreadMax = 5 //默认是64个线程并发消息,配置 consumeThreadMax 参数指定并发消费线程数,避免太大导致资源不够 selectorExpression = "timing_setting" ) public class TimingSettingMessageListener extends EnhanceMessageHandler<TimingSettingMessage> implements RocketMQListener<TimingSettingMessage> { public class TimingSettingMessageListener implements RocketMQListener<TimingSettingMessage> { @Autowired private TimingSettingService timingSettingService; @Override protected void handleMessage(TimingSettingMessage message) throws Exception { // 此时这里才是最终的业务处理,代码只需要处理资源类关闭异常,其他的可以交给父类重试 log.info("对时设置-业务消息处理:{}",message); // 持久化消息 TimingSetting timingSetting = new TimingSetting(); BeanUtils.copyProperties(message,timingSetting); timingSettingService.create(timingSetting); // 业务处理 } @Override protected void handleMaxRetriesExceeded(TimingSettingMessage message) { // 当超过指定重试次数消息时此处方法会被调用 // 生产中可以进行回退或其他业务操作 log.error("消息消费失败,请执行后续处理"); } /** * 是否执行重试机制 */ @Override protected boolean isRetry() { return true; } @Override protected boolean throwException() { // 是否抛出异常,false搭配retry自行处理异常 return false; } /** * 若需要处理消息过滤,在父级中进行统一处理,或者在此处实现之后,自行处理 * @param message 待处理消息 * @return true: 本次消息被过滤,false:不过滤 */ @Override protected boolean filter(TimingSettingMessage message) { // 此处可做消息过滤 return false; } /** * 监听消费消息,不需要执行业务处理,委派给父类做基础操作,父类做完基础操作后会调用子类的实际处理类型 */ @Override public void onMessage(TimingSettingMessage message) { super.dispatchMessage(message); log.info("对时设置-业务消息处理:{}",message); // 持久化消息 TimingSetting timingSetting = new TimingSetting(); BeanUtils.copyProperties(message,timingSetting); timingSettingService.create(timingSetting); } } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/TransactionRecordMessageListener.java
@@ -1,24 +1,31 @@ package com.ruoyi.integration.rocket.listener; import com.alibaba.fastjson.JSONObject; import com.ruoyi.integration.api.model.ConfirmTransactionRecord; import com.ruoyi.integration.api.model.Online; import com.ruoyi.integration.api.model.TransactionRecord; import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData; import com.ruoyi.integration.iotda.constant.SendTagConstant; import com.ruoyi.integration.iotda.enums.ServiceIdMenu; import com.ruoyi.integration.iotda.utils.produce.IotMessageProduce; import com.ruoyi.integration.iotda.utils.tools.MessageUtil; import com.ruoyi.integration.mongodb.service.TransactionRecordService; import com.ruoyi.integration.mongodb.service.UploadRealTimeMonitoringDataService; import com.ruoyi.integration.rocket.model.TransactionRecordMessage; import com.ruoyi.integration.rocket.util.EnhanceMessageHandler; import com.ruoyi.order.api.feignClient.ChargingOrderClient; import com.ruoyi.order.api.model.TChargingOrder; import com.ruoyi.order.api.vo.TransactionRecordMessageVO; import lombok.extern.slf4j.Slf4j; import org.apache.rocketmq.spring.annotation.MessageModel; import org.apache.rocketmq.spring.annotation.RocketMQMessageListener; import org.apache.rocketmq.spring.core.RocketMQListener; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.Objects; @Slf4j @@ -27,69 +34,56 @@ messageModel = MessageModel.CLUSTERING, consumerGroup = "charge_transaction_record", topic = "charge_transaction_record", selectorExpression = "transaction_record", consumeThreadMax = 5 //默认是64个线程并发消息,配置 consumeThreadMax 参数指定并发消费线程数,避免太大导致资源不够 selectorExpression = "transaction_record" ) public class TransactionRecordMessageListener extends EnhanceMessageHandler<TransactionRecordMessage> implements RocketMQListener<TransactionRecordMessage> { public class TransactionRecordMessageListener implements RocketMQListener<TransactionRecordMessage> { @Autowired private TransactionRecordService transactionRecordService; @Autowired private ChargingOrderClient chargingOrderClient; @Override protected void handleMessage(TransactionRecordMessage message) throws Exception { // 此时这里才是最终的业务处理,代码只需要处理资源类关闭异常,其他的可以交给父类重试 log.info("交易记录-业务消息处理:{}",message); // 持久化消息 TransactionRecord transactionRecord = new TransactionRecord(); BeanUtils.copyProperties(message,transactionRecord); transactionRecordService.create(transactionRecord); // 业务处理 TChargingOrder chargingOrder = chargingOrderClient.getOrderByCode(message.getTransaction_serial_number()).getData(); if(Objects.nonNull(chargingOrder)){ chargingOrder.setTotalElectricity(message.getTotal_electricity()); chargingOrderClient.updateChargingOrder(chargingOrder); } } @Override protected void handleMaxRetriesExceeded(TransactionRecordMessage message) { // 当超过指定重试次数消息时此处方法会被调用 // 生产中可以进行回退或其他业务操作 log.error("消息消费失败,请执行后续处理"); } /** * 是否执行重试机制 */ @Override protected boolean isRetry() { return true; } @Override protected boolean throwException() { // 是否抛出异常,false搭配retry自行处理异常 return false; } /** * 若需要处理消息过滤,在父级中进行统一处理,或者在此处实现之后,自行处理 * @param message 待处理消息 * @return true: 本次消息被过滤,false:不过滤 */ @Override protected boolean filter(TransactionRecordMessage message) { // 此处可做消息过滤 return false; } @Autowired private UploadRealTimeMonitoringDataService uploadRealTimeMonitoringDataService; @Resource private RedisTemplate redisTemplate; /** * 监听消费消息,不需要执行业务处理,委派给父类做基础操作,父类做完基础操作后会调用子类的实际处理类型 */ @Override public void onMessage(TransactionRecordMessage message) { super.dispatchMessage(message); log.info("交易记录-业务消息处理:{}",message); message.setResult(JSONObject.toJSONString(message)); // 持久化消息 TransactionRecord transactionRecord = new TransactionRecord(); BeanUtils.copyProperties(message,transactionRecord); transactionRecord.setResult(message.getResult()); transactionRecordService.create(transactionRecord); // 业务处理 TChargingOrder chargingOrderRecord = chargingOrderClient.getOrderByCode(message.getTransaction_serial_number()).getData(); if(Objects.nonNull(chargingOrderRecord)){ chargingOrderRecord.setTotalElectricity(message.getTotal_electricity()); chargingOrderClient.updateChargingOrder(chargingOrderRecord); } //计算费用 TransactionRecordMessageVO vo = new TransactionRecordMessageVO(); BeanUtils.copyProperties(message,vo); int code = chargingOrderClient.endChargeBillingCharge(vo).getCode(); if(200 != code){ //失败后添加到队列中继续处理数据 redisTemplate.opsForSet().add(SendTagConstant.TRANSACTION_RECORD, message.getTransaction_serial_number()); } // 添加实时上传记录结束记录 // 查询mogondb上一条数据 UploadRealTimeMonitoringData data = uploadRealTimeMonitoringDataService.getLastDataById(message.getTransaction_serial_number()); if(Objects.nonNull(data) && data.getStatus() != 5){ UploadRealTimeMonitoringData uploadRealTimeMonitoringData = new UploadRealTimeMonitoringData(); BeanUtils.copyProperties(data,uploadRealTimeMonitoringData); uploadRealTimeMonitoringData.setStatus(5); uploadRealTimeMonitoringDataService.create(uploadRealTimeMonitoringData); } } } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/UpdateBalanceReplyMessageListener.java
@@ -19,62 +19,24 @@ messageModel = MessageModel.CLUSTERING, consumerGroup = "charge_update_balance_reply", topic = "charge_update_balance_reply", selectorExpression = "update_balance_reply", consumeThreadMax = 5 //默认是64个线程并发消息,配置 consumeThreadMax 参数指定并发消费线程数,避免太大导致资源不够 selectorExpression = "update_balance_reply" ) public class UpdateBalanceReplyMessageListener extends EnhanceMessageHandler<UpdateBalanceReplyMessage> implements RocketMQListener<UpdateBalanceReplyMessage> { public class UpdateBalanceReplyMessageListener implements RocketMQListener<UpdateBalanceReplyMessage> { @Autowired private UpdateBalanceReplyService updateBalanceReplyService; @Override protected void handleMessage(UpdateBalanceReplyMessage message) throws Exception { // 此时这里才是最终的业务处理,代码只需要处理资源类关闭异常,其他的可以交给父类重试 log.info("余额更新应答-业务消息处理:{}",message); // 持久化消息 UpdateBalanceReply updateBalanceReply = new UpdateBalanceReply(); BeanUtils.copyProperties(message,updateBalanceReply); updateBalanceReplyService.create(updateBalanceReply); // 业务处理 } @Override protected void handleMaxRetriesExceeded(UpdateBalanceReplyMessage message) { // 当超过指定重试次数消息时此处方法会被调用 // 生产中可以进行回退或其他业务操作 log.error("消息消费失败,请执行后续处理"); } /** * 是否执行重试机制 */ @Override protected boolean isRetry() { return true; } @Override protected boolean throwException() { // 是否抛出异常,false搭配retry自行处理异常 return false; } /** * 若需要处理消息过滤,在父级中进行统一处理,或者在此处实现之后,自行处理 * @param message 待处理消息 * @return true: 本次消息被过滤,false:不过滤 */ @Override protected boolean filter(UpdateBalanceReplyMessage message) { // 此处可做消息过滤 return false; } /** * 监听消费消息,不需要执行业务处理,委派给父类做基础操作,父类做完基础操作后会调用子类的实际处理类型 */ @Override public void onMessage(UpdateBalanceReplyMessage message) { super.dispatchMessage(message); log.info("余额更新应答-业务消息处理:{}",message); // 持久化消息 UpdateBalanceReply updateBalanceReply = new UpdateBalanceReply(); BeanUtils.copyProperties(message,updateBalanceReply); updateBalanceReplyService.create(updateBalanceReply); } } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/UploadRealTimeMonitoringDataMessageListener.java
@@ -10,8 +10,12 @@ import com.ruoyi.integration.api.feignClient.TCECClient; import com.ruoyi.integration.api.model.Online; import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData; import com.ruoyi.integration.iotda.constant.SendTagConstant; import com.ruoyi.integration.mongodb.service.UploadRealTimeMonitoringDataService; import com.ruoyi.integration.rocket.model.ChargingMessage; import com.ruoyi.integration.rocket.model.ChargingOrderMessage; import com.ruoyi.integration.rocket.model.UploadRealTimeMonitoringDataMessage; import com.ruoyi.integration.rocket.produce.EnhanceProduce; import com.ruoyi.integration.rocket.util.EnhanceMessageHandler; import com.ruoyi.order.api.feignClient.ChargingOrderClient; import com.ruoyi.order.api.model.TChargingOrder; @@ -36,10 +40,9 @@ messageModel = MessageModel.CLUSTERING, consumerGroup = "charge_upload_real_time_monitoring_data", topic = "charge_upload_real_time_monitoring_data", selectorExpression = "upload_real_time_monitoring_data", consumeThreadMax = 5 //默认是64个线程并发消息,配置 consumeThreadMax 参数指定并发消费线程数,避免太大导致资源不够 selectorExpression = "upload_real_time_monitoring_data" ) public class UploadRealTimeMonitoringDataMessageListener extends EnhanceMessageHandler<UploadRealTimeMonitoringDataMessage> implements RocketMQListener<UploadRealTimeMonitoringDataMessage> { public class UploadRealTimeMonitoringDataMessageListener implements RocketMQListener<UploadRealTimeMonitoringDataMessage> { @Autowired private UploadRealTimeMonitoringDataService uploadRealTimeMonitoringDataService; @@ -48,129 +51,65 @@ private ChargingOrderClient chargingOrderClient; @Resource private AccountingStrategyDetailClient accountingStrategyDetailClient; @Resource private ChargingGunClient chargingGunClient; @Resource private FaultMessageClient faultMessageClient; @Autowired private EnhanceProduce enhanceProduce; @Resource private TCECClient tcecClient; @Override protected void handleMessage(UploadRealTimeMonitoringDataMessage message) throws Exception { // 此时这里才是最终的业务处理,代码只需要处理资源类关闭异常,其他的可以交给父类重试 log.info("上传实时监测数据-业务消息处理:{}",message); // 持久化消息 UploadRealTimeMonitoringData uploadRealTimeMonitoringData = new UploadRealTimeMonitoringData(); BeanUtils.copyProperties(message,uploadRealTimeMonitoringData); // 查询mogondb上一条数据 UploadRealTimeMonitoringData data = uploadRealTimeMonitoringDataService.getLastDataById(message.getTransaction_serial_number()); // 查询订单 TChargingOrder chargingOrder = chargingOrderClient.getOrderByCode(message.getTransaction_serial_number()).getData(); // 查询当前时间段的计费策略 TAccountingStrategyDetail accountingStrategyDetail = accountingStrategyDetailClient.getDetailBySiteId(chargingOrder.getSiteId()).getData(); uploadRealTimeMonitoringData.setElectrovalence_all(accountingStrategyDetail.getElectrovalence()); uploadRealTimeMonitoringData.setService_charge(accountingStrategyDetail.getServiceCharge()); if (Objects.nonNull(data)) { uploadRealTimeMonitoringData.setLast_time(data.getLast_time()); uploadRealTimeMonitoringData.setPeriod_electric_price(message.getPaid_amount().divide(data.getPaid_amount())); uploadRealTimeMonitoringData.setPeriod_charging_degree(message.getCharging_degree().divide(data.getCharging_degree())); uploadRealTimeMonitoringData.setPeriod_service_price(message.getCharging_degree().multiply(accountingStrategyDetail.getServiceCharge()).setScale(4, RoundingMode.HALF_UP)); }else { log.info("首次上传实时监测数据"); uploadRealTimeMonitoringData.setPeriod_electric_price(message.getPaid_amount()); uploadRealTimeMonitoringData.setPeriod_charging_degree(message.getCharging_degree()); uploadRealTimeMonitoringData.setPeriod_service_price(message.getCharging_degree().multiply(accountingStrategyDetail.getServiceCharge()).setScale(4, RoundingMode.HALF_UP)); } uploadRealTimeMonitoringDataService.create(uploadRealTimeMonitoringData); // 业务处理 UploadRealTimeMonitoringDataQuery query = new UploadRealTimeMonitoringDataQuery(); BeanUtils.copyProperties(uploadRealTimeMonitoringData, query); chargingOrderClient.chargeMonitoring(query); GetChargingGunByCode code = new GetChargingGunByCode(); code.setCharging_pile_code(message.getCharging_pile_code()); code.setCharging_gun_code(message.getCharging_gun_code()); TChargingGun chargingGun = chargingGunClient.getChargingGunByCode(code).getData(); if(Objects.nonNull(chargingGun)){ // 存储状态信息 TFaultMessage faultMessage = new TFaultMessage(); if(message.getCharging_gun_status().equals(0) || message.getCharging_gun_status().equals(1)){ faultMessage.setSiteId(chargingGun.getSiteId()); faultMessage.setChargingPileId(chargingGun.getChargingPileId()); faultMessage.setChargingGunId(chargingGun.getId()); switch (message.getCharging_gun_status()){ case 0: faultMessage.setStatus(1); chargingGun.setStatus(1); break; case 1: faultMessage.setStatus(2); chargingGun.setStatus(7); break; } faultMessage.setDownTime(LocalDateTime.now()); faultMessageClient.createFaultMessage(faultMessage); }else { switch (message.getCharging_gun_status()){ case 2: chargingGun.setStatus(2); break; case 3: chargingGun.setStatus(4); break; } // 空闲 充电 查询是否该设备之前存在离线记录或者故障记录 faultMessage = faultMessageClient.getFaultMessageByGunId(chargingGun.getId()).getData(); if(Objects.nonNull(faultMessage)){ faultMessage.setEndTime(LocalDateTime.now()); faultMessageClient.updateFaultMessage(faultMessage); } } chargingGunClient.updateChargingGunById(chargingGun); //推送状态给三方平台 tcecClient.pushChargingGunStatus(chargingGun.getFullNumber(), chargingGun.getStatus()); } } @Override protected void handleMaxRetriesExceeded(UploadRealTimeMonitoringDataMessage message) { // 当超过指定重试次数消息时此处方法会被调用 // 生产中可以进行回退或其他业务操作 log.error("消息消费失败,请执行后续处理"); } /** * 是否执行重试机制 */ @Override protected boolean isRetry() { return true; } @Override protected boolean throwException() { // 是否抛出异常,false搭配retry自行处理异常 return false; } /** * 若需要处理消息过滤,在父级中进行统一处理,或者在此处实现之后,自行处理 * @param message 待处理消息 * @return true: 本次消息被过滤,false:不过滤 */ @Override protected boolean filter(UploadRealTimeMonitoringDataMessage message) { // 此处可做消息过滤 return false; } /** * 监听消费消息,不需要执行业务处理,委派给父类做基础操作,父类做完基础操作后会调用子类的实际处理类型 */ @Override public void onMessage(UploadRealTimeMonitoringDataMessage message) { super.dispatchMessage(message); try { log.info("上传实时监测数据-业务消息处理:{}",message); // 持久化消息 UploadRealTimeMonitoringData uploadRealTimeMonitoringData = new UploadRealTimeMonitoringData(); BeanUtils.copyProperties(message,uploadRealTimeMonitoringData); // 查询mogondb上一条数据 UploadRealTimeMonitoringData data = uploadRealTimeMonitoringDataService.getLastDataById(message.getTransaction_serial_number()); // 查询订单 TChargingOrder chargingOrder = chargingOrderClient.getOrderByCode(message.getTransaction_serial_number()).getData(); // 查询当前时间段的计费策略 TAccountingStrategyDetail accountingStrategyDetail = accountingStrategyDetailClient.getDetailBySiteId(chargingOrder.getSiteId()).getData(); uploadRealTimeMonitoringData.setElectrovalence_all(accountingStrategyDetail.getElectrovalence()); uploadRealTimeMonitoringData.setService_charge(accountingStrategyDetail.getServiceCharge()); if (Objects.nonNull(data)) { uploadRealTimeMonitoringDataService.updateById(data.getId()); uploadRealTimeMonitoringData.setPeriod_electric_price(message.getPaid_amount().subtract(data.getPaid_amount())); uploadRealTimeMonitoringData.setPeriod_charging_degree(message.getCharging_degree().subtract(data.getCharging_degree())); uploadRealTimeMonitoringData.setPeriod_service_price(message.getCharging_degree().multiply(accountingStrategyDetail.getServiceCharge()).setScale(4, RoundingMode.HALF_UP)); }else { log.info("首次上传实时监测数据"); uploadRealTimeMonitoringData.setPeriod_electric_price(message.getPaid_amount()); uploadRealTimeMonitoringData.setPeriod_charging_degree(message.getCharging_degree()); uploadRealTimeMonitoringData.setPeriod_service_price(message.getCharging_degree().multiply(accountingStrategyDetail.getServiceCharge()).setScale(4, RoundingMode.HALF_UP)); } uploadRealTimeMonitoringData.setOrderType(chargingOrder.getOrderType()); uploadRealTimeMonitoringData.setSiteId(chargingOrder.getSiteId()); uploadRealTimeMonitoringData.setStatus(chargingOrder.getStatus()); int i = uploadRealTimeMonitoringDataService.create(uploadRealTimeMonitoringData); if(i == 0){ log.error("数据存储mongo失败"); } // 业务处理 UploadRealTimeMonitoringDataQuery query = new UploadRealTimeMonitoringDataQuery(); BeanUtils.copyProperties(uploadRealTimeMonitoringData, query); chargingOrderClient.chargeMonitoring(query); // 订单id ChargingOrderMessage chargingOrderMessage3 = new ChargingOrderMessage(); chargingOrderMessage3.setOrderNumber(chargingOrder.getCode()); // 推送充电订单信息 ChargingMessage chargingMessage4 = new ChargingMessage(); chargingMessage4.setServiceId(SendTagConstant.ORDER_STATUS); chargingMessage4.setOrderMessage(chargingOrderMessage3); enhanceProduce.orderInfoMessage(chargingMessage4); } catch (Exception e) { e.printStackTrace(); } } } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/WorkingParameterSettingReplyMessageListener.java
@@ -19,62 +19,24 @@ messageModel = MessageModel.CLUSTERING, consumerGroup = "charge_working_parameter_setting_reply", topic = "charge_working_parameter_setting_reply", selectorExpression = "working_parameter_setting_reply", consumeThreadMax = 5 //默认是64个线程并发消息,配置 consumeThreadMax 参数指定并发消费线程数,避免太大导致资源不够 selectorExpression = "working_parameter_setting_reply" ) public class WorkingParameterSettingReplyMessageListener extends EnhanceMessageHandler<WorkingParameterSettingReplyMessage> implements RocketMQListener<WorkingParameterSettingReplyMessage> { public class WorkingParameterSettingReplyMessageListener implements RocketMQListener<WorkingParameterSettingReplyMessage> { @Autowired private WorkingParameterSettingReplyService workingParameterSettingReplyService; @Override protected void handleMessage(WorkingParameterSettingReplyMessage message) throws Exception { // 此时这里才是最终的业务处理,代码只需要处理资源类关闭异常,其他的可以交给父类重试 log.info("充电桩工作参数设置应答-业务消息处理:{}",message); // 持久化消息 WorkingParameterSettingReply workingParameterSettingReply = new WorkingParameterSettingReply(); BeanUtils.copyProperties(message,workingParameterSettingReply); workingParameterSettingReplyService.create(workingParameterSettingReply); // 业务处理 } @Override protected void handleMaxRetriesExceeded(WorkingParameterSettingReplyMessage message) { // 当超过指定重试次数消息时此处方法会被调用 // 生产中可以进行回退或其他业务操作 log.error("消息消费失败,请执行后续处理"); } /** * 是否执行重试机制 */ @Override protected boolean isRetry() { return true; } @Override protected boolean throwException() { // 是否抛出异常,false搭配retry自行处理异常 return false; } /** * 若需要处理消息过滤,在父级中进行统一处理,或者在此处实现之后,自行处理 * @param message 待处理消息 * @return true: 本次消息被过滤,false:不过滤 */ @Override protected boolean filter(WorkingParameterSettingReplyMessage message) { // 此处可做消息过滤 return false; } /** * 监听消费消息,不需要执行业务处理,委派给父类做基础操作,父类做完基础操作后会调用子类的实际处理类型 */ @Override public void onMessage(WorkingParameterSettingReplyMessage message) { super.dispatchMessage(message); log.info("充电桩工作参数设置应答-业务消息处理:{}",message); // 持久化消息 WorkingParameterSettingReply workingParameterSettingReply = new WorkingParameterSettingReply(); BeanUtils.copyProperties(message,workingParameterSettingReply); workingParameterSettingReplyService.create(workingParameterSettingReply); } } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/produce/ChargingMessageListener.java
@@ -1,628 +1,625 @@ package com.ruoyi.integration.rocket.produce; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.ruoyi.chargingPile.api.feignClient.AccountingStrategyDetailClient; import com.ruoyi.chargingPile.api.feignClient.ChargingGunClient; import com.ruoyi.chargingPile.api.feignClient.ChargingPileClient; import com.ruoyi.chargingPile.api.feignClient.FaultMessageClient; import com.ruoyi.chargingPile.api.model.TAccountingStrategyDetail; import com.ruoyi.chargingPile.api.model.TChargingGun; import com.ruoyi.chargingPile.api.model.TFaultMessage; import com.ruoyi.chargingPile.api.vo.GetChargingGunByCode; import com.ruoyi.chargingPile.api.vo.UpdateChargingPileStatusVo; import com.ruoyi.common.redis.service.RedisService; import com.ruoyi.integration.api.model.*; import com.ruoyi.integration.drainage.TCECPushUtil; import com.ruoyi.integration.iotda.constant.SendTagConstant; import com.ruoyi.integration.iotda.enums.ServiceIdMenu; import com.ruoyi.integration.iotda.utils.tools.CP56Time2aConverter; import com.ruoyi.integration.mongodb.service.*; import com.ruoyi.integration.rocket.model.*; import com.ruoyi.integration.rocket.util.EnhanceMessageHandler; import com.ruoyi.order.api.feignClient.ChargingOrderClient; import com.ruoyi.order.api.model.TChargingOrder; import com.ruoyi.order.api.query.UploadRealTimeMonitoringDataQuery; import com.ruoyi.order.api.vo.PlatformStartChargingReplyMessageVO; import com.ruoyi.order.api.vo.PlatformStopChargingReplyVO; import com.ruoyi.order.api.vo.SecurityDetectionVO; import com.ruoyi.order.api.vo.TransactionRecordMessageVO; import lombok.extern.slf4j.Slf4j; import org.apache.rocketmq.spring.annotation.MessageModel; import org.apache.rocketmq.spring.annotation.RocketMQMessageListener; import org.apache.rocketmq.spring.core.RocketMQListener; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cloud.stream.annotation.StreamListener; import org.springframework.cloud.stream.messaging.Sink; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; import org.springframework.util.StringUtils; import javax.annotation.Resource; import java.math.RoundingMode; import java.time.LocalDateTime; import java.util.Date; import java.util.Objects; import java.util.Set; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; @Slf4j @Component @RocketMQMessageListener( messageModel = MessageModel.CLUSTERING, consumerGroup = "charge_charging_message", topic = "charge_charging_message", selectorExpression = "charging_message", consumeThreadMax = 64 //默认是64个线程并发消息,配置 consumeThreadMax 参数指定并发消费线程数,避免太大导致资源不够 ) public class ChargingMessageListener extends EnhanceMessageHandler<ChargingMessage> implements RocketMQListener<ChargingMessage> { @Autowired private AcquisitionBillingModeService acquisitionBillingModeService; @Autowired private BillingModeVerifyService billingModeVerifyService; @Autowired private BmsAbortService bmsAbortService; @Resource private ChargingOrderClient chargingOrderClient; @Autowired private BmsDemandAndChargerExportationService bmsDemandAndChargerExportationService; @Autowired private OnlineService onlineService; @Autowired private PingService pingService; @Autowired private EndChargeService endChargeService; @Autowired private ErrorMessageMessageService errorMessageMessageService; @Autowired private UploadRealTimeMonitoringDataService uploadRealTimeMonitoringDataService; @Resource private AccountingStrategyDetailClient accountingStrategyDetailClient; @Autowired private ChargingHandshakeService chargingHandshakeService; @Autowired private ParameterSettingService parameterSettingService; @Autowired private MotorAbortService motorAbortService; @Autowired private BmsInformationService bmsInformationService; @Autowired private ChargingPileStartsChargingService chargingPileStartsChargingService; @Autowired private PlatformStartChargingReplyService platformStartChargingReplyService; @Autowired private PlatformStopChargingReplyService platformStopChargingReplyService; @Autowired private TransactionRecordService transactionRecordService; @Autowired private UpdateBalanceReplyService updateBalanceReplyService; @Autowired private SynchronizeOfflineCardReplyService synchronizeOfflineCardReplyService; @Autowired private ClearOfflineCardReplyService clearOfflineCardReplyService; @Autowired private WorkingParameterSettingReplyService workingParameterSettingReplyService; @Autowired private TimingSettingService timingSettingService; @Autowired private SetupBillingModelReplyService setupBillingModelReplyService; @Autowired private GroundLockRealTimeDataService groundLockRealTimeDataService; @Autowired private ChargingPileReturnsGroundLockDataService chargingPileReturnsGroundLockDataService; @Autowired private PlatformRestartReplyService platformRestartReplyService; @Autowired private PlatformRemoteUpdateReplyService platformRemoteUpdateReplyService; @Autowired private QrCodeDeliveryReplyService qrCodeDeliveryReplyService; @Autowired private SecurityDetectionService securityDetectionService; @Autowired private TCECPushUtil tcecPushUtil; @Resource private ChargingPileClient chargingPileClient; @Resource private ChargingGunClient chargingGunClient; @Resource private RedisTemplate redisTemplate; @Autowired private EnhanceProduce enhanceProduce; @StreamListener("input") @Override protected void handleMessage(ChargingMessage message) throws Exception { log.info("rocket收到的消息内容:{}",message); String serviceId = message.getServiceId(); if(!StringUtils.hasLength(serviceId)){ return; } log.info("rocket收到的消息内容:{} {}", serviceId,message); switch (serviceId){ case SendTagConstant.ONLINE: OnlineMessage onlineMessage = message.getOnlineMessage(); log.info("充电桩登录认证业务消息处理:{}",onlineMessage); // 持久化消息 Online online = new Online(); BeanUtils.copyProperties(onlineMessage,online); onlineService.create(online); break; case SendTagConstant.PING: PingMessage pingMessage = message.getPingMessage(); log.info("充电桩心跳包-业务消息处理:{}",pingMessage); // 持久化消息 Ping ping = new Ping(); BeanUtils.copyProperties(pingMessage,ping); pingService.save(ping); //存储缓存中,5分钟有效 redisTemplate.opsForValue().set("ping:" + ping.getCharging_pile_code() + ping.getCharging_gun_code(), ping, 5, TimeUnit.MINUTES); ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()); threadPoolExecutor.execute(new Runnable() { @Override public void run() { UpdateChargingPileStatusVo vo1 = new UpdateChargingPileStatusVo(); vo1.setGun_code(pingMessage.getCharging_gun_code()); vo1.setPile_code(pingMessage.getCharging_pile_code()); vo1.setStatus(pingMessage.getCharging_gun_status()); chargingPileClient.updateChargingPileStatus(vo1); } }); break; case SendTagConstant.END_CHARGE: EndChargeMessage endChargeMessage = message.getEndChargeMessage(); log.info("充电结束-业务消息处理:{}",endChargeMessage); // 持久化消息 EndCharge endCharge = new EndCharge(); BeanUtils.copyProperties(endChargeMessage,endCharge); endChargeService.create(endCharge); ThreadPoolExecutor threadPoolExecutor1 = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()); threadPoolExecutor1.execute(new Runnable() { @Override public void run() { // 业务处理 chargingOrderClient.endCharge(endCharge.getTransaction_serial_number()); // 订单id String transactionSerialNumber = endCharge.getTransaction_serial_number(); ChargingOrderMessage chargingOrderMessage = new ChargingOrderMessage(); chargingOrderMessage.setOrderNumber(transactionSerialNumber); // 推送充电订单信息 ChargingMessage chargingMessage1 = new ChargingMessage(); chargingMessage1.setServiceId(SendTagConstant.ORDER_INFO); chargingMessage1.setOrderMessage(chargingOrderMessage); enhanceProduce.orderInfoMessage(chargingMessage1); // 推送充电订单状态 ChargingMessage chargingMessage2 = new ChargingMessage(); chargingMessage2.setServiceId(SendTagConstant.ORDER_STATUS); chargingMessage2.setOrderMessage(chargingOrderMessage); enhanceProduce.orderStatusMessage(chargingMessage2); // try { // TChargingOrder chargingOrder = chargingOrderClient.getOrderByCode(endCharge.getTransaction_serial_number()).getData(); // tcecPushUtil.pushSuperviseNotificationChargeOrderInfo(chargingOrder); // tcecPushUtil.pushSuperviseNotificationEquipChargeStatus(chargingOrder); // }catch (Exception e){ // e.printStackTrace(); // System.out.println("充电结束推送监管平台失败:"+e.getMessage()); //package com.ruoyi.integration.rocket.produce; // //import com.alibaba.fastjson.JSON; //import com.alibaba.fastjson.JSONObject; //import com.ruoyi.chargingPile.api.feignClient.AccountingStrategyDetailClient; //import com.ruoyi.chargingPile.api.feignClient.ChargingGunClient; //import com.ruoyi.chargingPile.api.feignClient.ChargingPileClient; //import com.ruoyi.chargingPile.api.feignClient.FaultMessageClient; //import com.ruoyi.chargingPile.api.model.TAccountingStrategyDetail; //import com.ruoyi.chargingPile.api.model.TChargingGun; //import com.ruoyi.chargingPile.api.model.TFaultMessage; //import com.ruoyi.chargingPile.api.vo.GetChargingGunByCode; //import com.ruoyi.chargingPile.api.vo.UpdateChargingPileStatusVo; //import com.ruoyi.common.redis.service.RedisService; //import com.ruoyi.integration.api.model.*; //import com.ruoyi.integration.drainage.TCECPushUtil; //import com.ruoyi.integration.iotda.constant.SendTagConstant; //import com.ruoyi.integration.iotda.enums.ServiceIdMenu; //import com.ruoyi.integration.iotda.utils.tools.CP56Time2aConverter; //import com.ruoyi.integration.mongodb.service.*; //import com.ruoyi.integration.rocket.model.*; //import com.ruoyi.integration.rocket.util.EnhanceMessageHandler; //import com.ruoyi.order.api.feignClient.ChargingOrderClient; //import com.ruoyi.order.api.model.TChargingOrder; //import com.ruoyi.order.api.query.UploadRealTimeMonitoringDataQuery; //import com.ruoyi.order.api.vo.PlatformStartChargingReplyMessageVO; //import com.ruoyi.order.api.vo.PlatformStopChargingReplyVO; //import com.ruoyi.order.api.vo.SecurityDetectionVO; //import com.ruoyi.order.api.vo.TransactionRecordMessageVO; //import lombok.extern.slf4j.Slf4j; //import org.apache.rocketmq.spring.annotation.MessageModel; //import org.apache.rocketmq.spring.annotation.RocketMQMessageListener; //import org.apache.rocketmq.spring.core.RocketMQListener; //import org.springframework.beans.BeanUtils; //import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.data.redis.core.RedisTemplate; //import org.springframework.stereotype.Component; //import org.springframework.util.StringUtils; // //import javax.annotation.Resource; //import java.math.RoundingMode; //import java.time.LocalDateTime; //import java.util.Date; //import java.util.Objects; //import java.util.Set; //import java.util.concurrent.LinkedBlockingQueue; //import java.util.concurrent.ThreadPoolExecutor; //import java.util.concurrent.TimeUnit; // //@Slf4j //@Component //@RocketMQMessageListener( // messageModel = MessageModel.CLUSTERING, // consumerGroup = "charge_charging_message", // topic = "charge_charging_message", // selectorExpression = "charging_message", // consumeThreadMax = 64 //默认是64个线程并发消息,配置 consumeThreadMax 参数指定并发消费线程数,避免太大导致资源不够 //) //public class ChargingMessageListener extends EnhanceMessageHandler<ChargingMessage> implements RocketMQListener<ChargingMessage> { // // @Autowired // private AcquisitionBillingModeService acquisitionBillingModeService; // @Autowired // private BillingModeVerifyService billingModeVerifyService; // @Autowired // private BmsAbortService bmsAbortService; // @Resource // private ChargingOrderClient chargingOrderClient; // @Autowired // private BmsDemandAndChargerExportationService bmsDemandAndChargerExportationService; // @Autowired // private OnlineService onlineService; // @Autowired // private PingService pingService; // @Autowired // private EndChargeService endChargeService; // @Autowired // private ErrorMessageMessageService errorMessageMessageService; // @Autowired // private UploadRealTimeMonitoringDataService uploadRealTimeMonitoringDataService; // @Resource // private AccountingStrategyDetailClient accountingStrategyDetailClient; // @Autowired // private ChargingHandshakeService chargingHandshakeService; // @Autowired // private ParameterSettingService parameterSettingService; // @Autowired // private MotorAbortService motorAbortService; // @Autowired // private BmsInformationService bmsInformationService; // @Autowired // private ChargingPileStartsChargingService chargingPileStartsChargingService; // @Autowired // private PlatformStartChargingReplyService platformStartChargingReplyService; // @Autowired // private PlatformStopChargingReplyService platformStopChargingReplyService; // @Autowired // private TransactionRecordService transactionRecordService; // @Autowired // private UpdateBalanceReplyService updateBalanceReplyService; // @Autowired // private SynchronizeOfflineCardReplyService synchronizeOfflineCardReplyService; // @Autowired // private ClearOfflineCardReplyService clearOfflineCardReplyService; // @Autowired // private WorkingParameterSettingReplyService workingParameterSettingReplyService; // @Autowired // private TimingSettingService timingSettingService; // @Autowired // private SetupBillingModelReplyService setupBillingModelReplyService; // @Autowired // private GroundLockRealTimeDataService groundLockRealTimeDataService; // @Autowired // private ChargingPileReturnsGroundLockDataService chargingPileReturnsGroundLockDataService; // @Autowired // private PlatformRestartReplyService platformRestartReplyService; // @Autowired // private PlatformRemoteUpdateReplyService platformRemoteUpdateReplyService; // @Autowired // private QrCodeDeliveryReplyService qrCodeDeliveryReplyService; // @Autowired // private SecurityDetectionService securityDetectionService; // @Autowired // private TCECPushUtil tcecPushUtil; // // @Resource // private ChargingPileClient chargingPileClient; // @Resource // private ChargingGunClient chargingGunClient; // // @Resource // private RedisTemplate redisTemplate; // // @Autowired // private EnhanceProduce enhanceProduce; // // // // @Override // protected void handleMessage(ChargingMessage message) throws Exception { // log.info("rocket收到的消息内容:{}",message); // String serviceId = message.getServiceId(); // if(!StringUtils.hasLength(serviceId)){ // return; // } // log.info("rocket收到的消息内容:{} {}", serviceId,message); // switch (serviceId){ // case SendTagConstant.ONLINE: // OnlineMessage onlineMessage = message.getOnlineMessage(); // log.info("充电桩登录认证业务消息处理:{}",onlineMessage); // // 持久化消息 // Online online = new Online(); // BeanUtils.copyProperties(onlineMessage,online); // onlineService.create(online); // break; // case SendTagConstant.PING: // PingMessage pingMessage = message.getPingMessage(); // log.info("充电桩心跳包-业务消息处理:{}",pingMessage); // // 持久化消息 // Ping ping = new Ping(); // BeanUtils.copyProperties(pingMessage,ping); // pingService.save(ping); // //存储缓存中,5分钟有效 // redisTemplate.opsForValue().set("ping:" + ping.getCharging_pile_code() + ping.getCharging_gun_code(), ping, 5, TimeUnit.MINUTES); // ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()); // threadPoolExecutor.execute(new Runnable() { // @Override // public void run() { // UpdateChargingPileStatusVo vo1 = new UpdateChargingPileStatusVo(); // vo1.setGun_code(pingMessage.getCharging_gun_code()); // vo1.setPile_code(pingMessage.getCharging_pile_code()); // vo1.setStatus(pingMessage.getCharging_gun_status()); // chargingPileClient.updateChargingPileStatus(vo1); // } // }); // break; // case SendTagConstant.END_CHARGE: // EndChargeMessage endChargeMessage = message.getEndChargeMessage(); // log.info("充电结束-业务消息处理:{}",endChargeMessage); // // 持久化消息 // EndCharge endCharge = new EndCharge(); // BeanUtils.copyProperties(endChargeMessage,endCharge); // endChargeService.create(endCharge); // ThreadPoolExecutor threadPoolExecutor1 = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()); // threadPoolExecutor1.execute(new Runnable() { // @Override // public void run() { // // 业务处理 // chargingOrderClient.endCharge(endCharge.getTransaction_serial_number()); // // 订单id // String transactionSerialNumber = endCharge.getTransaction_serial_number(); // ChargingOrderMessage chargingOrderMessage = new ChargingOrderMessage(); // chargingOrderMessage.setOrderNumber(transactionSerialNumber); // // 推送充电订单信息 // ChargingMessage chargingMessage1 = new ChargingMessage(); // chargingMessage1.setServiceId(SendTagConstant.ORDER_INFO); // chargingMessage1.setOrderMessage(chargingOrderMessage); // enhanceProduce.orderInfoMessage(chargingMessage1); // // 推送充电订单状态 // ChargingMessage chargingMessage2 = new ChargingMessage(); // chargingMessage2.setServiceId(SendTagConstant.ORDER_STATUS); // chargingMessage2.setOrderMessage(chargingOrderMessage); // enhanceProduce.orderStatusMessage(chargingMessage2); //// try { //// TChargingOrder chargingOrder = chargingOrderClient.getOrderByCode(endCharge.getTransaction_serial_number()).getData(); //// tcecPushUtil.pushSuperviseNotificationChargeOrderInfo(chargingOrder); //// tcecPushUtil.pushSuperviseNotificationEquipChargeStatus(chargingOrder); //// }catch (Exception e){ //// e.printStackTrace(); //// System.out.println("充电结束推送监管平台失败:"+e.getMessage()); //// } // } // }); // break; // case SendTagConstant.ERROR_MESSAGE: // ErrorMessageMessage errorMessageMessage1 = message.getErrorMessageMessage(); // log.info("错误报文-业务消息处理:{}",errorMessageMessage1); // // 持久化消息 // ErrorMessageMessage errorMessageMessage = new ErrorMessageMessage(); // BeanUtils.copyProperties(errorMessageMessage1,errorMessageMessage); // errorMessageMessageService.create(errorMessageMessage); // break; // case SendTagConstant.BILLING_MODE_VERIFY: // BillingModeVerifyMessage billingModeVerifyMessage = message.getBillingModeVerifyMessage(); // log.info("计费模型验证请求-业务消息处理:{}",billingModeVerifyMessage); // // 持久化消息 // BillingModeVerify billingModeVerify = new BillingModeVerify(); // BeanUtils.copyProperties(billingModeVerifyMessage,billingModeVerify); // billingModeVerifyService.create(billingModeVerify); // break; // case SendTagConstant.ACQUISITION_BILLING_MODE: // AcquisitionBillingModeMessage acquisitionBillingModeMessage = message.getAcquisitionBillingModeMessage(); // log.info("充电桩计费模型请求-业务消息处理:{}",acquisitionBillingModeMessage); // // 持久化消息 // AcquisitionBillingMode acquisitionBillingMode = new AcquisitionBillingMode(); // BeanUtils.copyProperties(acquisitionBillingModeMessage,acquisitionBillingMode); // acquisitionBillingModeService.create(acquisitionBillingMode); // break; // case SendTagConstant.UPLOAD_REAL_TIME_MONITORING_DATA: // try { // UploadRealTimeMonitoringDataMessage uploadRealTimeMonitoringDataMessage = message.getUploadRealTimeMonitoringDataMessage(); // log.info("上传实时监测数据-业务消息处理:{}",uploadRealTimeMonitoringDataMessage); // // 持久化消息 // UploadRealTimeMonitoringData uploadRealTimeMonitoringData = new UploadRealTimeMonitoringData(); // BeanUtils.copyProperties(uploadRealTimeMonitoringDataMessage,uploadRealTimeMonitoringData); // // 查询mogondb上一条数据 // UploadRealTimeMonitoringData data = uploadRealTimeMonitoringDataService.getLastDataById(uploadRealTimeMonitoringDataMessage.getTransaction_serial_number()); // // 查询订单 // TChargingOrder chargingOrder = chargingOrderClient.getOrderByCode(uploadRealTimeMonitoringDataMessage.getTransaction_serial_number()).getData(); // // 查询当前时间段的计费策略 // TAccountingStrategyDetail accountingStrategyDetail = accountingStrategyDetailClient.getDetailBySiteId(chargingOrder.getSiteId()).getData(); // uploadRealTimeMonitoringData.setElectrovalence_all(accountingStrategyDetail.getElectrovalence()); // uploadRealTimeMonitoringData.setService_charge(accountingStrategyDetail.getServiceCharge()); // if (Objects.nonNull(data)) { // uploadRealTimeMonitoringDataService.updateById(data.getId()); // uploadRealTimeMonitoringData.setPeriod_electric_price(uploadRealTimeMonitoringDataMessage.getPaid_amount().subtract(data.getPaid_amount())); // uploadRealTimeMonitoringData.setPeriod_charging_degree(uploadRealTimeMonitoringDataMessage.getCharging_degree().subtract(data.getCharging_degree())); // uploadRealTimeMonitoringData.setPeriod_service_price(uploadRealTimeMonitoringDataMessage.getCharging_degree().multiply(accountingStrategyDetail.getServiceCharge()).setScale(4, RoundingMode.HALF_UP)); // }else { // log.info("首次上传实时监测数据"); // uploadRealTimeMonitoringData.setPeriod_electric_price(uploadRealTimeMonitoringDataMessage.getPaid_amount()); // uploadRealTimeMonitoringData.setPeriod_charging_degree(uploadRealTimeMonitoringDataMessage.getCharging_degree()); // uploadRealTimeMonitoringData.setPeriod_service_price(uploadRealTimeMonitoringDataMessage.getCharging_degree().multiply(accountingStrategyDetail.getServiceCharge()).setScale(4, RoundingMode.HALF_UP)); // } // uploadRealTimeMonitoringData.setOrderType(chargingOrder.getOrderType()); // uploadRealTimeMonitoringData.setSiteId(chargingOrder.getSiteId()); // uploadRealTimeMonitoringData.setStatus(chargingOrder.getStatus()); //// uploadRealTimeMonitoringData.setStartTime(chargingOrder.getStartTime()); //// uploadRealTimeMonitoringData.setEndTime(chargingOrder.getEndTime()); // int i = uploadRealTimeMonitoringDataService.create(uploadRealTimeMonitoringData); // if(i == 0){ // log.error("数据存储mongo失败"); // } // // ThreadPoolExecutor threadPoolExecutor2 = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()); // threadPoolExecutor2.execute(new Runnable() { // @Override // public void run() { // // 业务处理 // UploadRealTimeMonitoringDataQuery query = new UploadRealTimeMonitoringDataQuery(); // BeanUtils.copyProperties(uploadRealTimeMonitoringData, query); // chargingOrderClient.chargeMonitoring(query); // chargingOrder.setEndSoc(uploadRealTimeMonitoringDataMessage.getSoc()+""); // ChargingOrderMessage chargingOrderMessage3 = new ChargingOrderMessage(); // chargingOrderMessage3.setSoc(uploadRealTimeMonitoringDataMessage.getSoc()+""); // chargingOrderMessage3.setOrderNumber(chargingOrder.getCode()); // // 推送充电订单信息 // ChargingMessage chargingMessage4 = new ChargingMessage(); // chargingMessage4.setServiceId(SendTagConstant.ORDER_STATUS); // chargingMessage4.setOrderMessage(chargingOrderMessage3); // enhanceProduce.orderInfoMessage(chargingMessage4); //// tcecPushUtil.pushSuperviseNotificationEquipChargeStatus(chargingOrder); // } } }); break; case SendTagConstant.ERROR_MESSAGE: ErrorMessageMessage errorMessageMessage1 = message.getErrorMessageMessage(); log.info("错误报文-业务消息处理:{}",errorMessageMessage1); // 持久化消息 ErrorMessageMessage errorMessageMessage = new ErrorMessageMessage(); BeanUtils.copyProperties(errorMessageMessage1,errorMessageMessage); errorMessageMessageService.create(errorMessageMessage); break; case SendTagConstant.BILLING_MODE_VERIFY: BillingModeVerifyMessage billingModeVerifyMessage = message.getBillingModeVerifyMessage(); log.info("计费模型验证请求-业务消息处理:{}",billingModeVerifyMessage); // 持久化消息 BillingModeVerify billingModeVerify = new BillingModeVerify(); BeanUtils.copyProperties(billingModeVerifyMessage,billingModeVerify); billingModeVerifyService.create(billingModeVerify); break; case SendTagConstant.ACQUISITION_BILLING_MODE: AcquisitionBillingModeMessage acquisitionBillingModeMessage = message.getAcquisitionBillingModeMessage(); log.info("充电桩计费模型请求-业务消息处理:{}",acquisitionBillingModeMessage); // 持久化消息 AcquisitionBillingMode acquisitionBillingMode = new AcquisitionBillingMode(); BeanUtils.copyProperties(acquisitionBillingModeMessage,acquisitionBillingMode); acquisitionBillingModeService.create(acquisitionBillingMode); break; case SendTagConstant.UPLOAD_REAL_TIME_MONITORING_DATA: try { UploadRealTimeMonitoringDataMessage uploadRealTimeMonitoringDataMessage = message.getUploadRealTimeMonitoringDataMessage(); log.info("上传实时监测数据-业务消息处理:{}",uploadRealTimeMonitoringDataMessage); // 持久化消息 UploadRealTimeMonitoringData uploadRealTimeMonitoringData = new UploadRealTimeMonitoringData(); BeanUtils.copyProperties(uploadRealTimeMonitoringDataMessage,uploadRealTimeMonitoringData); // 查询mogondb上一条数据 UploadRealTimeMonitoringData data = uploadRealTimeMonitoringDataService.getLastDataById(uploadRealTimeMonitoringDataMessage.getTransaction_serial_number()); // 查询订单 TChargingOrder chargingOrder = chargingOrderClient.getOrderByCode(uploadRealTimeMonitoringDataMessage.getTransaction_serial_number()).getData(); // 查询当前时间段的计费策略 TAccountingStrategyDetail accountingStrategyDetail = accountingStrategyDetailClient.getDetailBySiteId(chargingOrder.getSiteId()).getData(); uploadRealTimeMonitoringData.setElectrovalence_all(accountingStrategyDetail.getElectrovalence()); uploadRealTimeMonitoringData.setService_charge(accountingStrategyDetail.getServiceCharge()); if (Objects.nonNull(data)) { uploadRealTimeMonitoringDataService.updateById(data.getId()); uploadRealTimeMonitoringData.setPeriod_electric_price(uploadRealTimeMonitoringDataMessage.getPaid_amount().subtract(data.getPaid_amount())); uploadRealTimeMonitoringData.setPeriod_charging_degree(uploadRealTimeMonitoringDataMessage.getCharging_degree().subtract(data.getCharging_degree())); uploadRealTimeMonitoringData.setPeriod_service_price(uploadRealTimeMonitoringDataMessage.getCharging_degree().multiply(accountingStrategyDetail.getServiceCharge()).setScale(4, RoundingMode.HALF_UP)); }else { log.info("首次上传实时监测数据"); uploadRealTimeMonitoringData.setPeriod_electric_price(uploadRealTimeMonitoringDataMessage.getPaid_amount()); uploadRealTimeMonitoringData.setPeriod_charging_degree(uploadRealTimeMonitoringDataMessage.getCharging_degree()); uploadRealTimeMonitoringData.setPeriod_service_price(uploadRealTimeMonitoringDataMessage.getCharging_degree().multiply(accountingStrategyDetail.getServiceCharge()).setScale(4, RoundingMode.HALF_UP)); } uploadRealTimeMonitoringData.setOrderType(chargingOrder.getOrderType()); uploadRealTimeMonitoringData.setSiteId(chargingOrder.getSiteId()); uploadRealTimeMonitoringData.setStatus(chargingOrder.getStatus()); // uploadRealTimeMonitoringData.setStartTime(chargingOrder.getStartTime()); // uploadRealTimeMonitoringData.setEndTime(chargingOrder.getEndTime()); int i = uploadRealTimeMonitoringDataService.create(uploadRealTimeMonitoringData); if(i == 0){ log.error("数据存储mongo失败"); } ThreadPoolExecutor threadPoolExecutor2 = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()); threadPoolExecutor2.execute(new Runnable() { @Override public void run() { // 业务处理 UploadRealTimeMonitoringDataQuery query = new UploadRealTimeMonitoringDataQuery(); BeanUtils.copyProperties(uploadRealTimeMonitoringData, query); chargingOrderClient.chargeMonitoring(query); chargingOrder.setEndSoc(uploadRealTimeMonitoringDataMessage.getSoc()+""); ChargingOrderMessage chargingOrderMessage3 = new ChargingOrderMessage(); chargingOrderMessage3.setSoc(uploadRealTimeMonitoringDataMessage.getSoc()+""); chargingOrderMessage3.setOrderNumber(chargingOrder.getCode()); // 推送充电订单信息 ChargingMessage chargingMessage4 = new ChargingMessage(); chargingMessage4.setServiceId(SendTagConstant.ORDER_STATUS); chargingMessage4.setOrderMessage(chargingOrderMessage3); enhanceProduce.orderInfoMessage(chargingMessage4); // tcecPushUtil.pushSuperviseNotificationEquipChargeStatus(chargingOrder); } }); } catch (Exception e) { e.printStackTrace(); } break; case SendTagConstant.CHARGING_HANDSHAKE: ChargingHandshakeMessage chargingHandshakeMessage = message.getChargingHandshakeMessage(); log.info("充电握手-业务消息处理:{}",chargingHandshakeMessage); // 持久化消息 ChargingHandshake chargingHandshake = new ChargingHandshake(); BeanUtils.copyProperties(chargingHandshakeMessage,chargingHandshake); chargingHandshakeService.create(chargingHandshake); break; case SendTagConstant.PARAMETER_SETTING: ParameterSettingMessage parameterSettingMessage = message.getParameterSettingMessage(); log.info("业务消息处理:{}",parameterSettingMessage); // 持久化消息 ParameterSetting parameterSetting = new ParameterSetting(); BeanUtils.copyProperties(parameterSettingMessage,parameterSetting); parameterSettingService.create(parameterSetting); break; case SendTagConstant.BMS_ABORT: BmsAbortMessage bmsAbortMessage = message.getBmsAbortMessage(); log.info("充电阶段BMS中止-业务消息处理:{}",bmsAbortMessage); // 持久化消息 BmsAbort bmsAbort = new BmsAbort(); BeanUtils.copyProperties(bmsAbortMessage,bmsAbort); bmsAbortService.create(bmsAbort); ThreadPoolExecutor threadPoolExecutor3 = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()); threadPoolExecutor3.execute(new Runnable() { @Override public void run() { // 业务处理 chargingOrderClient.excelEndCharge(bmsAbort.getTransaction_serial_number()); } }); break; case SendTagConstant.MOTOR_ABORT: MotorAbortMessage motorAbortMessage = message.getMotorAbortMessage(); log.info("充电阶段充电机中止-业务消息处理:{}",motorAbortMessage); // 持久化消息 MotorAbort motorAbort = new MotorAbort(); BeanUtils.copyProperties(motorAbortMessage,motorAbort); motorAbortService.create(motorAbort); ThreadPoolExecutor threadPoolExecutor4 = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()); threadPoolExecutor4.execute(new Runnable() { @Override public void run() { // 业务处理 chargingOrderClient.excelEndCharge(motorAbort.getTransaction_serial_number()); } }); break; case SendTagConstant.BMS_DEMAND_AND_CHARGER_EXPORTATION: BmsDemandAndChargerExportationMessage bmsDemandAndChargerExportationMessage = message.getBmsDemandAndChargerExportationMessage(); log.info("充电过程BMS需求、充电机输出-业务消息处理:{}",bmsDemandAndChargerExportationMessage); // 持久化消息 BmsDemandAndChargerExportation bmsDemandAndChargerExportation = new BmsDemandAndChargerExportation(); BeanUtils.copyProperties(bmsDemandAndChargerExportationMessage,bmsDemandAndChargerExportation); bmsDemandAndChargerExportationService.create(bmsDemandAndChargerExportation); ThreadPoolExecutor threadPoolExecutor5 = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()); threadPoolExecutor5.execute(new Runnable() { @Override public void run() { // 业务处理 TChargingOrder chargingOrderBms = chargingOrderClient.getOrderByCode(bmsDemandAndChargerExportationMessage.getTransaction_serial_number()).getData(); if(Objects.nonNull(chargingOrderBms)){ chargingOrderBms.setNeedElec(bmsDemandAndChargerExportationMessage.getBms_current_requirements()); chargingOrderClient.updateChargingOrder(chargingOrderBms); } } }); break; case SendTagConstant.BMS_INFORMATION: BmsInformationMessage bmsInformationMessage = message.getBmsInformationMessage(); log.info("充电过程BMS信息-业务消息处理:{}",bmsInformationMessage); // 持久化消息 BmsInformation bmsInformation = new BmsInformation(); BeanUtils.copyProperties(bmsInformationMessage,bmsInformation); bmsInformationService.create(bmsInformation); break; case SendTagConstant.CHARGING_PILE_STARTS_CHARGING: ChargingPileStartsChargingMessage chargingPileStartsChargingMessage = message.getChargingPileStartsChargingMessage(); log.info("充电桩主动申请启动充电-业务消息处理:{}",chargingPileStartsChargingMessage); // 持久化消息 ChargingPileStartsCharging chargingPileStartsCharging = new ChargingPileStartsCharging(); BeanUtils.copyProperties(chargingPileStartsChargingMessage,chargingPileStartsCharging); chargingPileStartsChargingService.create(chargingPileStartsCharging); break; case SendTagConstant.PLATFORM_START_CHARGING_REPLY: PlatformStartChargingReplyMessage platformStartChargingReplyMessage = message.getPlatformStartChargingReplyMessage(); log.info("远程启机命令回复-业务消息处理:{}",platformStartChargingReplyMessage); // 持久化消息 PlatformStartChargingReply platformStartChargingReply = new PlatformStartChargingReply(); BeanUtils.copyProperties(platformStartChargingReplyMessage,platformStartChargingReply); platformStartChargingReplyService.create(platformStartChargingReply); ThreadPoolExecutor threadPoolExecutor6 = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()); threadPoolExecutor6.execute(new Runnable() { @Override public void run() { // 业务处理 PlatformStartChargingReplyMessageVO message1 = new com.ruoyi.order.api.vo.PlatformStartChargingReplyMessageVO(); BeanUtils.copyProperties(platformStartChargingReplyMessage, message1); chargingOrderClient.startChargeSuccessfully(message1); } }); break; case SendTagConstant.PLATFORM_STOP_CHARGING_REPLY: PlatformStopChargingReplyMessage platformStopChargingReplyMessage = message.getPlatformStopChargingReplyMessage(); log.info("远程停机命令回复-业务消息处理:{}",platformStopChargingReplyMessage); // 持久化消息 PlatformStopChargingReply platformStopChargingReply = new PlatformStopChargingReply(); BeanUtils.copyProperties(platformStopChargingReplyMessage,platformStopChargingReply); platformStopChargingReplyService.create(platformStopChargingReply); ThreadPoolExecutor threadPoolExecutor7 = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()); threadPoolExecutor7.execute(new Runnable() { @Override public void run() { PlatformStopChargingReplyVO platformStopChargingReply1 = new PlatformStopChargingReplyVO(); BeanUtils.copyProperties(platformStopChargingReply, platformStopChargingReply1); chargingOrderClient.terminateSuccessfulResponse(platformStopChargingReply1); } }); break; case SendTagConstant.TRANSACTION_RECORD: TransactionRecordMessage transactionRecordMessage = message.getTransactionRecordMessage(); log.info("交易记录-业务消息处理:{}",transactionRecordMessage); transactionRecordMessage.setResult(JSONObject.toJSONString(message)); // 持久化消息 TransactionRecord transactionRecord = new TransactionRecord(); BeanUtils.copyProperties(transactionRecordMessage,transactionRecord); transactionRecordService.create(transactionRecord); ThreadPoolExecutor threadPoolExecutor8 = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()); threadPoolExecutor8.execute(new Runnable() { @Override public void run() { // 业务处理 TChargingOrder chargingOrderRecord = chargingOrderClient.getOrderByCode(transactionRecordMessage.getTransaction_serial_number()).getData(); if(Objects.nonNull(chargingOrderRecord)){ chargingOrderRecord.setTotalElectricity(transactionRecordMessage.getTotal_electricity()); chargingOrderClient.updateChargingOrder(chargingOrderRecord); } //计算费用 TransactionRecordMessageVO vo = new TransactionRecordMessageVO(); BeanUtils.copyProperties(transactionRecordMessage,vo); int code = chargingOrderClient.endChargeBillingCharge(vo).getCode(); if(200 != code){ //失败后添加到队列中继续处理数据 redisTemplate.opsForSet().add(SendTagConstant.TRANSACTION_RECORD, transactionRecordMessage.getTransaction_serial_number()); } } }); // 添加实时上传记录结束记录 // 查询mogondb上一条数据 UploadRealTimeMonitoringData data = uploadRealTimeMonitoringDataService.getLastDataById(transactionRecordMessage.getTransaction_serial_number()); if(Objects.nonNull(data) && data.getStatus() != 5){ UploadRealTimeMonitoringData uploadRealTimeMonitoringData = new UploadRealTimeMonitoringData(); BeanUtils.copyProperties(data,uploadRealTimeMonitoringData); uploadRealTimeMonitoringData.setStatus(5); uploadRealTimeMonitoringDataService.create(uploadRealTimeMonitoringData); } break; case SendTagConstant.UPDATE_BALANCE_REPLY: UpdateBalanceReplyMessage updateBalanceReplyMessage = message.getUpdateBalanceReplyMessage(); log.info("余额更新应答-业务消息处理:{}",updateBalanceReplyMessage); // 持久化消息 UpdateBalanceReply updateBalanceReply = new UpdateBalanceReply(); BeanUtils.copyProperties(updateBalanceReplyMessage,updateBalanceReply); updateBalanceReplyService.create(updateBalanceReply); break; case SendTagConstant.SYNCHRONIZE_OFFLINE_CARD_REPLY: SynchronizeOfflineCardReplyMessage synchronizeOfflineCardReplyMessage = message.getSynchronizeOfflineCardReplyMessage(); log.info("卡数据同步应答-业务消息处理:{}",synchronizeOfflineCardReplyMessage); // 持久化消息 SynchronizeOfflineCardReply synchronizeOfflineCardReply = new SynchronizeOfflineCardReply(); BeanUtils.copyProperties(synchronizeOfflineCardReplyMessage,synchronizeOfflineCardReply); synchronizeOfflineCardReplyService.create(synchronizeOfflineCardReply); break; case SendTagConstant.CLEAR_OFFLINE_CARD_REPLY: ClearOfflineCardReplyMessage clearOfflineCardReplyMessage = message.getClearOfflineCardReplyMessage(); log.info("离线卡数据清除应答-业务消息处理:{}",clearOfflineCardReplyMessage); // 持久化消息 ClearOfflineCardReply clearOfflineCardReply = new ClearOfflineCardReply(); BeanUtils.copyProperties(clearOfflineCardReplyMessage,clearOfflineCardReply); clearOfflineCardReplyService.create(clearOfflineCardReply); break; case SendTagConstant.WORKING_PARAMETER_SETTING_REPLY: WorkingParameterSettingReplyMessage workingParameterSettingReplyMessage = message.getWorkingParameterSettingReplyMessage(); log.info("充电桩工作参数设置应答-业务消息处理:{}",workingParameterSettingReplyMessage); // 持久化消息 WorkingParameterSettingReply workingParameterSettingReply = new WorkingParameterSettingReply(); BeanUtils.copyProperties(workingParameterSettingReplyMessage,workingParameterSettingReply); workingParameterSettingReplyService.create(workingParameterSettingReply); break; case SendTagConstant.TIMING_SETTING: TimingSettingMessage timingSettingMessage = message.getTimingSettingMessage(); log.info("对时设置-业务消息处理:{}",timingSettingMessage); // 持久化消息 TimingSetting timingSetting = new TimingSetting(); BeanUtils.copyProperties(timingSettingMessage,timingSetting); timingSettingService.create(timingSetting); break; case SendTagConstant.SETUP_BILLING_MODEL_REPLY: SetupBillingModelReplyMessage setupBillingModelReplyMessage = message.getSetupBillingModelReplyMessage(); log.info("计费模型应答-业务消息处理:{}",setupBillingModelReplyMessage); // 持久化消息 SetupBillingModelReply setupBillingModelReply = new SetupBillingModelReply(); BeanUtils.copyProperties(setupBillingModelReplyMessage,setupBillingModelReply); setupBillingModelReplyService.create(setupBillingModelReply); break; case SendTagConstant.GROUND_LOCK_REAL_TIME_DATA: GroundLockRealTimeDataMessage groundLockRealTimeDataMessage = message.getGroundLockRealTimeDataMessage(); log.info("地锁数据上送(充电桩上送)-业务消息处理:{}",groundLockRealTimeDataMessage); // 持久化消息 GroundLockRealTimeData groundLockRealTimeData = new GroundLockRealTimeData(); BeanUtils.copyProperties(groundLockRealTimeDataMessage,groundLockRealTimeData); groundLockRealTimeDataService.create(groundLockRealTimeData); break; case SendTagConstant.CHARGING_PILE_RETURNS_GROUND_LOCK_DATA: ChargingPileReturnsGroundLockDataMessage chargingPileReturnsGroundLockDataMessage = message.getChargingPileReturnsGroundLockDataMessage(); log.info("充电桩返回数据(上行)-业务消息处理:{}",chargingPileReturnsGroundLockDataMessage); // 持久化消息 ChargingPileReturnsGroundLockData chargingPileReturnsGroundLockData = new ChargingPileReturnsGroundLockData(); BeanUtils.copyProperties(chargingPileReturnsGroundLockDataMessage,chargingPileReturnsGroundLockData); chargingPileReturnsGroundLockDataService.create(chargingPileReturnsGroundLockData); break; case SendTagConstant.PLATFORM_RESTART_REPLY: PlatformRestartReplyMessage platformRestartReplyMessage = message.getPlatformRestartReplyMessage(); log.info("远程重启应答-业务消息处理:{}",platformRestartReplyMessage); // 持久化消息 PlatformRestartReply platformRestartReply = new PlatformRestartReply(); BeanUtils.copyProperties(platformRestartReplyMessage,platformRestartReply); platformRestartReplyService.create(platformRestartReply); break; case SendTagConstant.QR_CODE_DELIVERY_REPLY: QrCodeDeliveryReplyMessage qrCodeDeliveryReplyMessage = message.getQrCodeDeliveryReplyMessage(); log.info("二维码下发应答-业务消息处理:{}",qrCodeDeliveryReplyMessage); QrCodeDeliveryReply qrCodeDeliveryReply = new QrCodeDeliveryReply(); BeanUtils.copyProperties(qrCodeDeliveryReplyMessage,qrCodeDeliveryReply); qrCodeDeliveryReplyService.create(qrCodeDeliveryReply); break; case SendTagConstant.SECURITY_DETECTION: SecurityDetectionMessage securityDetectionMessage = message.getSecurityDetectionMessage(); log.info("安全监测-业务消息处理:{}",securityDetectionMessage); SecurityDetection securityDetection = new SecurityDetection(); BeanUtils.copyProperties(securityDetectionMessage,securityDetection); securityDetectionService.create(securityDetection); ThreadPoolExecutor threadPoolExecutor9 = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()); threadPoolExecutor9.execute(new Runnable() { @Override public void run() { SecurityDetectionVO securityDetection1 = new SecurityDetectionVO(); BeanUtils.copyProperties(securityDetection, securityDetection1); chargingOrderClient.securityDetection(securityDetection1); } }); break; default: PlatformRemoteUpdateReplyMessage platformRemoteUpdateReplyMessage = message.getPlatformRemoteUpdateReplyMessage(); log.info("远程更新应答-业务消息处理:{}",platformRemoteUpdateReplyMessage); PlatformRemoteUpdateReply platformRemoteUpdateReply = new PlatformRemoteUpdateReply(); BeanUtils.copyProperties(platformRemoteUpdateReplyMessage,platformRemoteUpdateReply); platformRemoteUpdateReplyService.create(platformRemoteUpdateReply); break; } } @Override protected void handleMaxRetriesExceeded(ChargingMessage message) { // 当超过指定重试次数消息时此处方法会被调用 // 生产中可以进行回退或其他业务操作 log.error("消息消费失败,请执行后续处理"); } /** * 是否执行重试机制 */ @Override protected boolean isRetry() { return true; } @Override protected boolean throwException() { // 是否抛出异常,false搭配retry自行处理异常 return false; } /** * 若需要处理消息过滤,在父级中进行统一处理,或者在此处实现之后,自行处理 * @param message 待处理消息 * @return true: 本次消息被过滤,false:不过滤 */ @Override protected boolean filter(ChargingMessage message) { // 此处可做消息过滤 return false; } /** * 监听消费消息,不需要执行业务处理,委派给父类做基础操作,父类做完基础操作后会调用子类的实际处理类型 */ @Override public void onMessage(ChargingMessage message) { super.dispatchMessage(message); } /** * 处理未正常完成费用计算的订单 */ public void transactionRecord(){ Set<String> members = redisTemplate.opsForSet().members(SendTagConstant.TRANSACTION_RECORD); for (String member : members) { TransactionRecord transactionRecord = transactionRecordService.findOne(member); if(null == transactionRecord){ redisTemplate.opsForSet().remove(SendTagConstant.TRANSACTION_RECORD, member); }else{ TransactionRecordMessageVO vo = new TransactionRecordMessageVO(); BeanUtils.copyProperties(transactionRecord, vo); int code = chargingOrderClient.endChargeBillingCharge(vo).getCode(); if(200 == code){ redisTemplate.opsForSet().remove(SendTagConstant.TRANSACTION_RECORD, member); } } } } } // }); // } catch (Exception e) { // e.printStackTrace(); // } // break; // case SendTagConstant.CHARGING_HANDSHAKE: // ChargingHandshakeMessage chargingHandshakeMessage = message.getChargingHandshakeMessage(); // log.info("充电握手-业务消息处理:{}",chargingHandshakeMessage); // // 持久化消息 // ChargingHandshake chargingHandshake = new ChargingHandshake(); // BeanUtils.copyProperties(chargingHandshakeMessage,chargingHandshake); // chargingHandshakeService.create(chargingHandshake); // break; // case SendTagConstant.PARAMETER_SETTING: // ParameterSettingMessage parameterSettingMessage = message.getParameterSettingMessage(); // log.info("业务消息处理:{}",parameterSettingMessage); // // 持久化消息 // ParameterSetting parameterSetting = new ParameterSetting(); // BeanUtils.copyProperties(parameterSettingMessage,parameterSetting); // parameterSettingService.create(parameterSetting); // break; // case SendTagConstant.BMS_ABORT: // BmsAbortMessage bmsAbortMessage = message.getBmsAbortMessage(); // log.info("充电阶段BMS中止-业务消息处理:{}",bmsAbortMessage); // // 持久化消息 // BmsAbort bmsAbort = new BmsAbort(); // BeanUtils.copyProperties(bmsAbortMessage,bmsAbort); // bmsAbortService.create(bmsAbort); // // ThreadPoolExecutor threadPoolExecutor3 = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()); // threadPoolExecutor3.execute(new Runnable() { // @Override // public void run() { // // 业务处理 // chargingOrderClient.excelEndCharge(bmsAbort.getTransaction_serial_number()); // } // }); // break; // case SendTagConstant.MOTOR_ABORT: // MotorAbortMessage motorAbortMessage = message.getMotorAbortMessage(); // log.info("充电阶段充电机中止-业务消息处理:{}",motorAbortMessage); // // 持久化消息 // MotorAbort motorAbort = new MotorAbort(); // BeanUtils.copyProperties(motorAbortMessage,motorAbort); // motorAbortService.create(motorAbort); // ThreadPoolExecutor threadPoolExecutor4 = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()); // threadPoolExecutor4.execute(new Runnable() { // @Override // public void run() { // // 业务处理 // chargingOrderClient.excelEndCharge(motorAbort.getTransaction_serial_number()); // } // }); // break; // case SendTagConstant.BMS_DEMAND_AND_CHARGER_EXPORTATION: // BmsDemandAndChargerExportationMessage bmsDemandAndChargerExportationMessage = message.getBmsDemandAndChargerExportationMessage(); // log.info("充电过程BMS需求、充电机输出-业务消息处理:{}",bmsDemandAndChargerExportationMessage); // // 持久化消息 // BmsDemandAndChargerExportation bmsDemandAndChargerExportation = new BmsDemandAndChargerExportation(); // BeanUtils.copyProperties(bmsDemandAndChargerExportationMessage,bmsDemandAndChargerExportation); // bmsDemandAndChargerExportationService.create(bmsDemandAndChargerExportation); // ThreadPoolExecutor threadPoolExecutor5 = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()); // threadPoolExecutor5.execute(new Runnable() { // @Override // public void run() { // // 业务处理 // TChargingOrder chargingOrderBms = chargingOrderClient.getOrderByCode(bmsDemandAndChargerExportationMessage.getTransaction_serial_number()).getData(); // if(Objects.nonNull(chargingOrderBms)){ // chargingOrderBms.setNeedElec(bmsDemandAndChargerExportationMessage.getBms_current_requirements()); // chargingOrderClient.updateChargingOrder(chargingOrderBms); // } // } // }); // break; // case SendTagConstant.BMS_INFORMATION: // BmsInformationMessage bmsInformationMessage = message.getBmsInformationMessage(); // log.info("充电过程BMS信息-业务消息处理:{}",bmsInformationMessage); // // 持久化消息 // BmsInformation bmsInformation = new BmsInformation(); // BeanUtils.copyProperties(bmsInformationMessage,bmsInformation); // bmsInformationService.create(bmsInformation); // break; // case SendTagConstant.CHARGING_PILE_STARTS_CHARGING: // ChargingPileStartsChargingMessage chargingPileStartsChargingMessage = message.getChargingPileStartsChargingMessage(); // log.info("充电桩主动申请启动充电-业务消息处理:{}",chargingPileStartsChargingMessage); // // 持久化消息 // ChargingPileStartsCharging chargingPileStartsCharging = new ChargingPileStartsCharging(); // BeanUtils.copyProperties(chargingPileStartsChargingMessage,chargingPileStartsCharging); // chargingPileStartsChargingService.create(chargingPileStartsCharging); // break; // case SendTagConstant.PLATFORM_START_CHARGING_REPLY: // PlatformStartChargingReplyMessage platformStartChargingReplyMessage = message.getPlatformStartChargingReplyMessage(); // log.info("远程启机命令回复-业务消息处理:{}",platformStartChargingReplyMessage); // // 持久化消息 // PlatformStartChargingReply platformStartChargingReply = new PlatformStartChargingReply(); // BeanUtils.copyProperties(platformStartChargingReplyMessage,platformStartChargingReply); // platformStartChargingReplyService.create(platformStartChargingReply); // ThreadPoolExecutor threadPoolExecutor6 = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()); // threadPoolExecutor6.execute(new Runnable() { // @Override // public void run() { // // 业务处理 // PlatformStartChargingReplyMessageVO message1 = new com.ruoyi.order.api.vo.PlatformStartChargingReplyMessageVO(); // BeanUtils.copyProperties(platformStartChargingReplyMessage, message1); // chargingOrderClient.startChargeSuccessfully(message1); // } // }); // break; // case SendTagConstant.PLATFORM_STOP_CHARGING_REPLY: // PlatformStopChargingReplyMessage platformStopChargingReplyMessage = message.getPlatformStopChargingReplyMessage(); // log.info("远程停机命令回复-业务消息处理:{}",platformStopChargingReplyMessage); // // 持久化消息 // PlatformStopChargingReply platformStopChargingReply = new PlatformStopChargingReply(); // BeanUtils.copyProperties(platformStopChargingReplyMessage,platformStopChargingReply); // platformStopChargingReplyService.create(platformStopChargingReply); // ThreadPoolExecutor threadPoolExecutor7 = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()); // threadPoolExecutor7.execute(new Runnable() { // @Override // public void run() { // PlatformStopChargingReplyVO platformStopChargingReply1 = new PlatformStopChargingReplyVO(); // BeanUtils.copyProperties(platformStopChargingReply, platformStopChargingReply1); // chargingOrderClient.terminateSuccessfulResponse(platformStopChargingReply1); // } // }); // break; // case SendTagConstant.TRANSACTION_RECORD: // TransactionRecordMessage transactionRecordMessage = message.getTransactionRecordMessage(); // log.info("交易记录-业务消息处理:{}",transactionRecordMessage); // transactionRecordMessage.setResult(JSONObject.toJSONString(message)); // // 持久化消息 // TransactionRecord transactionRecord = new TransactionRecord(); // BeanUtils.copyProperties(transactionRecordMessage,transactionRecord); // transactionRecordService.create(transactionRecord); // ThreadPoolExecutor threadPoolExecutor8 = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()); // threadPoolExecutor8.execute(new Runnable() { // @Override // public void run() { // // 业务处理 // TChargingOrder chargingOrderRecord = chargingOrderClient.getOrderByCode(transactionRecordMessage.getTransaction_serial_number()).getData(); // if(Objects.nonNull(chargingOrderRecord)){ // chargingOrderRecord.setTotalElectricity(transactionRecordMessage.getTotal_electricity()); // chargingOrderClient.updateChargingOrder(chargingOrderRecord); // } // //计算费用 // TransactionRecordMessageVO vo = new TransactionRecordMessageVO(); // BeanUtils.copyProperties(transactionRecordMessage,vo); // int code = chargingOrderClient.endChargeBillingCharge(vo).getCode(); // if(200 != code){ // //失败后添加到队列中继续处理数据 // redisTemplate.opsForSet().add(SendTagConstant.TRANSACTION_RECORD, transactionRecordMessage.getTransaction_serial_number()); // } // } // }); // // // // 添加实时上传记录结束记录 // // 查询mogondb上一条数据 // UploadRealTimeMonitoringData data = uploadRealTimeMonitoringDataService.getLastDataById(transactionRecordMessage.getTransaction_serial_number()); // if(Objects.nonNull(data) && data.getStatus() != 5){ // UploadRealTimeMonitoringData uploadRealTimeMonitoringData = new UploadRealTimeMonitoringData(); // BeanUtils.copyProperties(data,uploadRealTimeMonitoringData); // uploadRealTimeMonitoringData.setStatus(5); // uploadRealTimeMonitoringDataService.create(uploadRealTimeMonitoringData); // } // break; // case SendTagConstant.UPDATE_BALANCE_REPLY: // UpdateBalanceReplyMessage updateBalanceReplyMessage = message.getUpdateBalanceReplyMessage(); // log.info("余额更新应答-业务消息处理:{}",updateBalanceReplyMessage); // // 持久化消息 // UpdateBalanceReply updateBalanceReply = new UpdateBalanceReply(); // BeanUtils.copyProperties(updateBalanceReplyMessage,updateBalanceReply); // updateBalanceReplyService.create(updateBalanceReply); // break; // case SendTagConstant.SYNCHRONIZE_OFFLINE_CARD_REPLY: // SynchronizeOfflineCardReplyMessage synchronizeOfflineCardReplyMessage = message.getSynchronizeOfflineCardReplyMessage(); // log.info("卡数据同步应答-业务消息处理:{}",synchronizeOfflineCardReplyMessage); // // 持久化消息 // SynchronizeOfflineCardReply synchronizeOfflineCardReply = new SynchronizeOfflineCardReply(); // BeanUtils.copyProperties(synchronizeOfflineCardReplyMessage,synchronizeOfflineCardReply); // synchronizeOfflineCardReplyService.create(synchronizeOfflineCardReply); // break; // case SendTagConstant.CLEAR_OFFLINE_CARD_REPLY: // ClearOfflineCardReplyMessage clearOfflineCardReplyMessage = message.getClearOfflineCardReplyMessage(); // log.info("离线卡数据清除应答-业务消息处理:{}",clearOfflineCardReplyMessage); // // 持久化消息 // ClearOfflineCardReply clearOfflineCardReply = new ClearOfflineCardReply(); // BeanUtils.copyProperties(clearOfflineCardReplyMessage,clearOfflineCardReply); // clearOfflineCardReplyService.create(clearOfflineCardReply); // break; // case SendTagConstant.WORKING_PARAMETER_SETTING_REPLY: // WorkingParameterSettingReplyMessage workingParameterSettingReplyMessage = message.getWorkingParameterSettingReplyMessage(); // log.info("充电桩工作参数设置应答-业务消息处理:{}",workingParameterSettingReplyMessage); // // 持久化消息 // WorkingParameterSettingReply workingParameterSettingReply = new WorkingParameterSettingReply(); // BeanUtils.copyProperties(workingParameterSettingReplyMessage,workingParameterSettingReply); // workingParameterSettingReplyService.create(workingParameterSettingReply); // break; // case SendTagConstant.TIMING_SETTING: // TimingSettingMessage timingSettingMessage = message.getTimingSettingMessage(); // log.info("对时设置-业务消息处理:{}",timingSettingMessage); // // 持久化消息 // TimingSetting timingSetting = new TimingSetting(); // BeanUtils.copyProperties(timingSettingMessage,timingSetting); // timingSettingService.create(timingSetting); // break; // case SendTagConstant.SETUP_BILLING_MODEL_REPLY: // SetupBillingModelReplyMessage setupBillingModelReplyMessage = message.getSetupBillingModelReplyMessage(); // log.info("计费模型应答-业务消息处理:{}",setupBillingModelReplyMessage); // // 持久化消息 // SetupBillingModelReply setupBillingModelReply = new SetupBillingModelReply(); // BeanUtils.copyProperties(setupBillingModelReplyMessage,setupBillingModelReply); // setupBillingModelReplyService.create(setupBillingModelReply); // break; // case SendTagConstant.GROUND_LOCK_REAL_TIME_DATA: // GroundLockRealTimeDataMessage groundLockRealTimeDataMessage = message.getGroundLockRealTimeDataMessage(); // log.info("地锁数据上送(充电桩上送)-业务消息处理:{}",groundLockRealTimeDataMessage); // // 持久化消息 // GroundLockRealTimeData groundLockRealTimeData = new GroundLockRealTimeData(); // BeanUtils.copyProperties(groundLockRealTimeDataMessage,groundLockRealTimeData); // groundLockRealTimeDataService.create(groundLockRealTimeData); // break; // case SendTagConstant.CHARGING_PILE_RETURNS_GROUND_LOCK_DATA: // ChargingPileReturnsGroundLockDataMessage chargingPileReturnsGroundLockDataMessage = message.getChargingPileReturnsGroundLockDataMessage(); // log.info("充电桩返回数据(上行)-业务消息处理:{}",chargingPileReturnsGroundLockDataMessage); // // 持久化消息 // ChargingPileReturnsGroundLockData chargingPileReturnsGroundLockData = new ChargingPileReturnsGroundLockData(); // BeanUtils.copyProperties(chargingPileReturnsGroundLockDataMessage,chargingPileReturnsGroundLockData); // chargingPileReturnsGroundLockDataService.create(chargingPileReturnsGroundLockData); // break; // case SendTagConstant.PLATFORM_RESTART_REPLY: // PlatformRestartReplyMessage platformRestartReplyMessage = message.getPlatformRestartReplyMessage(); // log.info("远程重启应答-业务消息处理:{}",platformRestartReplyMessage); // // 持久化消息 // PlatformRestartReply platformRestartReply = new PlatformRestartReply(); // BeanUtils.copyProperties(platformRestartReplyMessage,platformRestartReply); // platformRestartReplyService.create(platformRestartReply); // break; // case SendTagConstant.QR_CODE_DELIVERY_REPLY: // QrCodeDeliveryReplyMessage qrCodeDeliveryReplyMessage = message.getQrCodeDeliveryReplyMessage(); // log.info("二维码下发应答-业务消息处理:{}",qrCodeDeliveryReplyMessage); // QrCodeDeliveryReply qrCodeDeliveryReply = new QrCodeDeliveryReply(); // BeanUtils.copyProperties(qrCodeDeliveryReplyMessage,qrCodeDeliveryReply); // qrCodeDeliveryReplyService.create(qrCodeDeliveryReply); // break; // case SendTagConstant.SECURITY_DETECTION: // SecurityDetectionMessage securityDetectionMessage = message.getSecurityDetectionMessage(); // log.info("安全监测-业务消息处理:{}",securityDetectionMessage); // SecurityDetection securityDetection = new SecurityDetection(); // BeanUtils.copyProperties(securityDetectionMessage,securityDetection); // securityDetectionService.create(securityDetection); // ThreadPoolExecutor threadPoolExecutor9 = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()); // threadPoolExecutor9.execute(new Runnable() { // @Override // public void run() { // SecurityDetectionVO securityDetection1 = new SecurityDetectionVO(); // BeanUtils.copyProperties(securityDetection, securityDetection1); // chargingOrderClient.securityDetection(securityDetection1); // } // }); // break; // default: // PlatformRemoteUpdateReplyMessage platformRemoteUpdateReplyMessage = message.getPlatformRemoteUpdateReplyMessage(); // log.info("远程更新应答-业务消息处理:{}",platformRemoteUpdateReplyMessage); // PlatformRemoteUpdateReply platformRemoteUpdateReply = new PlatformRemoteUpdateReply(); // BeanUtils.copyProperties(platformRemoteUpdateReplyMessage,platformRemoteUpdateReply); // platformRemoteUpdateReplyService.create(platformRemoteUpdateReply); // break; // } // } // // @Override // protected void handleMaxRetriesExceeded(ChargingMessage message) { // // 当超过指定重试次数消息时此处方法会被调用 // // 生产中可以进行回退或其他业务操作 // log.error("消息消费失败,请执行后续处理"); // } // // // /** // * 是否执行重试机制 // */ // @Override // protected boolean isRetry() { // return true; // } // // @Override // protected boolean throwException() { // // 是否抛出异常,false搭配retry自行处理异常 // return false; // } // // /** // * 若需要处理消息过滤,在父级中进行统一处理,或者在此处实现之后,自行处理 // * @param message 待处理消息 // * @return true: 本次消息被过滤,false:不过滤 // */ // @Override // protected boolean filter(ChargingMessage message) { // // 此处可做消息过滤 // return false; // } // // /** // * 监听消费消息,不需要执行业务处理,委派给父类做基础操作,父类做完基础操作后会调用子类的实际处理类型 // */ // @Override // public void onMessage(ChargingMessage message) { // super.dispatchMessage(message); // } // // // /** // * 处理未正常完成费用计算的订单 // */ // public void transactionRecord(){ // Set<String> members = redisTemplate.opsForSet().members(SendTagConstant.TRANSACTION_RECORD); // for (String member : members) { // TransactionRecord transactionRecord = transactionRecordService.findOne(member); // if(null == transactionRecord){ // redisTemplate.opsForSet().remove(SendTagConstant.TRANSACTION_RECORD, member); // }else{ // TransactionRecordMessageVO vo = new TransactionRecordMessageVO(); // BeanUtils.copyProperties(transactionRecord, vo); // int code = chargingOrderClient.endChargeBillingCharge(vo).getCode(); // if(200 == code){ // redisTemplate.opsForSet().remove(SendTagConstant.TRANSACTION_RECORD, member); // } // } // } // } //} ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/produce/ChargingMessageUtil.java
@@ -1,527 +1,522 @@ package com.ruoyi.integration.rocket.produce; import com.alibaba.fastjson.JSONObject; import com.ruoyi.chargingPile.api.feignClient.AccountingStrategyDetailClient; import com.ruoyi.chargingPile.api.feignClient.ChargingGunClient; import com.ruoyi.chargingPile.api.feignClient.ChargingPileClient; import com.ruoyi.chargingPile.api.model.TAccountingStrategyDetail; import com.ruoyi.chargingPile.api.model.TChargingGun; import com.ruoyi.chargingPile.api.vo.UpdateChargingPileStatusVo; import com.ruoyi.integration.api.model.*; import com.ruoyi.integration.drainage.TCECPushUtil; import com.ruoyi.integration.iotda.constant.SendTagConstant; import com.ruoyi.integration.mongodb.service.*; import com.ruoyi.integration.rocket.model.*; import com.ruoyi.integration.rocket.util.EnhanceMessageHandler; import com.ruoyi.order.api.feignClient.ChargingOrderClient; import com.ruoyi.order.api.model.TChargingOrder; import com.ruoyi.order.api.query.UploadRealTimeMonitoringDataQuery; import com.ruoyi.order.api.vo.PlatformStartChargingReplyMessageVO; import com.ruoyi.order.api.vo.PlatformStopChargingReplyVO; import com.ruoyi.order.api.vo.SecurityDetectionVO; import com.ruoyi.order.api.vo.TransactionRecordMessageVO; import lombok.extern.slf4j.Slf4j; import org.apache.rocketmq.client.producer.SendResult; import org.apache.rocketmq.spring.annotation.MessageModel; import org.apache.rocketmq.spring.annotation.RocketMQMessageListener; import org.apache.rocketmq.spring.core.RocketMQListener; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cloud.stream.annotation.StreamListener; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; import org.springframework.util.StringUtils; import javax.annotation.Resource; import java.math.RoundingMode; import java.util.Objects; import java.util.Set; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; @Slf4j @Component public class ChargingMessageUtil { @Autowired private AcquisitionBillingModeService acquisitionBillingModeService; @Autowired private BillingModeVerifyService billingModeVerifyService; @Autowired private BmsAbortService bmsAbortService; @Resource private ChargingOrderClient chargingOrderClient; @Autowired private BmsDemandAndChargerExportationService bmsDemandAndChargerExportationService; @Autowired private OnlineService onlineService; @Autowired private PingService pingService; @Autowired private EndChargeService endChargeService; @Autowired private ErrorMessageMessageService errorMessageMessageService; @Autowired private UploadRealTimeMonitoringDataService uploadRealTimeMonitoringDataService; @Resource private AccountingStrategyDetailClient accountingStrategyDetailClient; @Autowired private ChargingHandshakeService chargingHandshakeService; @Autowired private ParameterSettingService parameterSettingService; @Autowired private MotorAbortService motorAbortService; @Autowired private BmsInformationService bmsInformationService; @Autowired private ChargingPileStartsChargingService chargingPileStartsChargingService; @Autowired private PlatformStartChargingReplyService platformStartChargingReplyService; @Autowired private PlatformStopChargingReplyService platformStopChargingReplyService; @Autowired private TransactionRecordService transactionRecordService; @Autowired private UpdateBalanceReplyService updateBalanceReplyService; @Autowired private SynchronizeOfflineCardReplyService synchronizeOfflineCardReplyService; @Autowired private ClearOfflineCardReplyService clearOfflineCardReplyService; @Autowired private WorkingParameterSettingReplyService workingParameterSettingReplyService; @Autowired private TimingSettingService timingSettingService; @Autowired private SetupBillingModelReplyService setupBillingModelReplyService; @Autowired private GroundLockRealTimeDataService groundLockRealTimeDataService; @Autowired private ChargingPileReturnsGroundLockDataService chargingPileReturnsGroundLockDataService; @Autowired private PlatformRestartReplyService platformRestartReplyService; @Autowired private PlatformRemoteUpdateReplyService platformRemoteUpdateReplyService; @Autowired private QrCodeDeliveryReplyService qrCodeDeliveryReplyService; @Autowired private SecurityDetectionService securityDetectionService; @Autowired private TCECPushUtil tcecPushUtil; @Resource private ChargingPileClient chargingPileClient; @Resource private ChargingGunClient chargingGunClient; @Resource private RedisTemplate redisTemplate; @Autowired private EnhanceProduce enhanceProduce; public void handleMessage(com.ruoyi.integration.rocket.model.ChargingMessage message){ log.info("rocket收到的消息内容:{}",message); String serviceId = message.getServiceId(); if(!StringUtils.hasLength(serviceId)){ return; } log.info("rocket收到的消息内容:{} {}", serviceId,message); switch (serviceId){ case SendTagConstant.ONLINE: OnlineMessage onlineMessage = message.getOnlineMessage(); log.info("充电桩登录认证业务消息处理:{}",onlineMessage); // 持久化消息 Online online = new Online(); BeanUtils.copyProperties(onlineMessage,online); onlineService.create(online); break; case SendTagConstant.PING: PingMessage pingMessage = message.getPingMessage(); log.info("充电桩心跳包-业务消息处理:{}",pingMessage); // 持久化消息 Ping ping = new Ping(); BeanUtils.copyProperties(pingMessage,ping); pingService.save(ping); //存储缓存中,5分钟有效 redisTemplate.opsForValue().set("ping:" + ping.getCharging_pile_code() + ping.getCharging_gun_code(), ping, 5, TimeUnit.MINUTES); UpdateChargingPileStatusVo vo1 = new UpdateChargingPileStatusVo(); vo1.setGun_code(pingMessage.getCharging_gun_code()); vo1.setPile_code(pingMessage.getCharging_pile_code()); vo1.setStatus(pingMessage.getCharging_gun_status()); chargingPileClient.updateChargingPileStatus(vo1); // 监管平台推送充电设备状态 SendResult sendResult; String gunCode = pingMessage.getCharging_pile_code() + pingMessage.getCharging_gun_code(); ChargingMessage chargingMessage = new ChargingMessage(); chargingMessage.setServiceId(SendTagConstant.GUN_STATUS); GunStatusMessage gunStatusMessage = new GunStatusMessage(); gunStatusMessage.setFullNumber(gunCode); chargingMessage.setGunStatusMessage(gunStatusMessage); sendResult = enhanceProduce.gunStatusMessage(chargingMessage); break; case SendTagConstant.END_CHARGE: EndChargeMessage endChargeMessage = message.getEndChargeMessage(); log.info("充电结束-业务消息处理:{}",endChargeMessage); // 持久化消息 EndCharge endCharge = new EndCharge(); BeanUtils.copyProperties(endChargeMessage,endCharge); endChargeService.create(endCharge); // 业务处理 chargingOrderClient.endCharge(endCharge.getTransaction_serial_number()); // 订单id String transactionSerialNumber = endCharge.getTransaction_serial_number(); ChargingOrderMessage chargingOrderMessage = new ChargingOrderMessage(); chargingOrderMessage.setOrderNumber(transactionSerialNumber); // 推送充电订单信息 ChargingMessage chargingMessage1 = new ChargingMessage(); chargingMessage1.setServiceId(SendTagConstant.ORDER_INFO); chargingMessage1.setOrderMessage(chargingOrderMessage); enhanceProduce.orderInfoMessage(chargingMessage1); // 推送充电订单状态 ChargingMessage chargingMessage2 = new ChargingMessage(); chargingMessage2.setServiceId(SendTagConstant.ORDER_STATUS); chargingMessage2.setOrderMessage(chargingOrderMessage); enhanceProduce.orderStatusMessage(chargingMessage2); // ThreadPoolExecutor threadPoolExecutor1 = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()); // threadPoolExecutor1.execute(new Runnable() { //package com.ruoyi.integration.rocket.produce; // //import com.alibaba.fastjson.JSONObject; //import com.ruoyi.chargingPile.api.feignClient.AccountingStrategyDetailClient; //import com.ruoyi.chargingPile.api.feignClient.ChargingGunClient; //import com.ruoyi.chargingPile.api.feignClient.ChargingPileClient; //import com.ruoyi.chargingPile.api.model.TAccountingStrategyDetail; //import com.ruoyi.chargingPile.api.model.TChargingGun; //import com.ruoyi.chargingPile.api.vo.UpdateChargingPileStatusVo; //import com.ruoyi.integration.api.model.*; //import com.ruoyi.integration.drainage.TCECPushUtil; //import com.ruoyi.integration.iotda.constant.SendTagConstant; //import com.ruoyi.integration.mongodb.service.*; //import com.ruoyi.integration.rocket.model.*; //import com.ruoyi.order.api.feignClient.ChargingOrderClient; //import com.ruoyi.order.api.model.TChargingOrder; //import com.ruoyi.order.api.query.UploadRealTimeMonitoringDataQuery; //import com.ruoyi.order.api.vo.PlatformStartChargingReplyMessageVO; //import com.ruoyi.order.api.vo.PlatformStopChargingReplyVO; //import com.ruoyi.order.api.vo.SecurityDetectionVO; //import com.ruoyi.order.api.vo.TransactionRecordMessageVO; //import lombok.extern.slf4j.Slf4j; //import org.apache.rocketmq.client.producer.SendResult; //import org.springframework.beans.BeanUtils; //import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.data.redis.core.RedisTemplate; //import org.springframework.stereotype.Component; //import org.springframework.util.StringUtils; // //import javax.annotation.Resource; //import java.math.RoundingMode; //import java.util.Objects; //import java.util.Set; //import java.util.concurrent.LinkedBlockingQueue; //import java.util.concurrent.ThreadPoolExecutor; //import java.util.concurrent.TimeUnit; // // //@Slf4j //@Component //public class ChargingMessageUtil { // // @Autowired // private AcquisitionBillingModeService acquisitionBillingModeService; // @Autowired // private BillingModeVerifyService billingModeVerifyService; // @Autowired // private BmsAbortService bmsAbortService; // @Resource // private ChargingOrderClient chargingOrderClient; // @Autowired // private BmsDemandAndChargerExportationService bmsDemandAndChargerExportationService; // @Autowired // private OnlineService onlineService; // @Autowired // private PingService pingService; // @Autowired // private EndChargeService endChargeService; // @Autowired // private ErrorMessageMessageService errorMessageMessageService; // @Autowired // private UploadRealTimeMonitoringDataService uploadRealTimeMonitoringDataService; // @Resource // private AccountingStrategyDetailClient accountingStrategyDetailClient; // @Autowired // private ChargingHandshakeService chargingHandshakeService; // @Autowired // private ParameterSettingService parameterSettingService; // @Autowired // private MotorAbortService motorAbortService; // @Autowired // private BmsInformationService bmsInformationService; // @Autowired // private ChargingPileStartsChargingService chargingPileStartsChargingService; // @Autowired // private PlatformStartChargingReplyService platformStartChargingReplyService; // @Autowired // private PlatformStopChargingReplyService platformStopChargingReplyService; // @Autowired // private TransactionRecordService transactionRecordService; // @Autowired // private UpdateBalanceReplyService updateBalanceReplyService; // @Autowired // private SynchronizeOfflineCardReplyService synchronizeOfflineCardReplyService; // @Autowired // private ClearOfflineCardReplyService clearOfflineCardReplyService; // @Autowired // private WorkingParameterSettingReplyService workingParameterSettingReplyService; // @Autowired // private TimingSettingService timingSettingService; // @Autowired // private SetupBillingModelReplyService setupBillingModelReplyService; // @Autowired // private GroundLockRealTimeDataService groundLockRealTimeDataService; // @Autowired // private ChargingPileReturnsGroundLockDataService chargingPileReturnsGroundLockDataService; // @Autowired // private PlatformRestartReplyService platformRestartReplyService; // @Autowired // private PlatformRemoteUpdateReplyService platformRemoteUpdateReplyService; // @Autowired // private QrCodeDeliveryReplyService qrCodeDeliveryReplyService; // @Autowired // private SecurityDetectionService securityDetectionService; // @Autowired // private TCECPushUtil tcecPushUtil; // // @Resource // private ChargingPileClient chargingPileClient; // @Resource // private ChargingGunClient chargingGunClient; // // @Resource // private RedisTemplate redisTemplate; // @Autowired // private EnhanceProduce enhanceProduce; // // // // // // public void handleMessage(com.ruoyi.integration.rocket.model.ChargingMessage message){ // log.info("rocket收到的消息内容:{}",message); // String serviceId = message.getServiceId(); // if(!StringUtils.hasLength(serviceId)){ // return; // } // log.info("rocket收到的消息内容:{} {}", serviceId,message); // switch (serviceId){ // case SendTagConstant.ONLINE: // OnlineMessage onlineMessage = message.getOnlineMessage(); // log.info("充电桩登录认证业务消息处理:{}",onlineMessage); // // 持久化消息 // Online online = new Online(); // BeanUtils.copyProperties(onlineMessage,online); // onlineService.create(online); // break; // case SendTagConstant.PING: // PingMessage pingMessage = message.getPingMessage(); // log.info("充电桩心跳包-业务消息处理:{}",pingMessage); // // 持久化消息 // Ping ping = new Ping(); // BeanUtils.copyProperties(pingMessage,ping); // pingService.save(ping); // //存储缓存中,5分钟有效 // redisTemplate.opsForValue().set("ping:" + ping.getCharging_pile_code() + ping.getCharging_gun_code(), ping, 5, TimeUnit.MINUTES); // // UpdateChargingPileStatusVo vo1 = new UpdateChargingPileStatusVo(); // vo1.setGun_code(pingMessage.getCharging_gun_code()); // vo1.setPile_code(pingMessage.getCharging_pile_code()); // vo1.setStatus(pingMessage.getCharging_gun_status()); // chargingPileClient.updateChargingPileStatus(vo1); // // 监管平台推送充电设备状态 // SendResult sendResult; // String gunCode = pingMessage.getCharging_pile_code() + pingMessage.getCharging_gun_code(); // ChargingMessage chargingMessage = new ChargingMessage(); // chargingMessage.setServiceId(SendTagConstant.GUN_STATUS); // GunStatusMessage gunStatusMessage = new GunStatusMessage(); // gunStatusMessage.setFullNumber(gunCode); // chargingMessage.setGunStatusMessage(gunStatusMessage); // sendResult = enhanceProduce.gunStatusMessage(chargingMessage); // // break; // case SendTagConstant.END_CHARGE: // EndChargeMessage endChargeMessage = message.getEndChargeMessage(); // log.info("充电结束-业务消息处理:{}",endChargeMessage); // // 持久化消息 // EndCharge endCharge = new EndCharge(); // BeanUtils.copyProperties(endChargeMessage,endCharge); // endChargeService.create(endCharge); // // 业务处理 // chargingOrderClient.endCharge(endCharge.getTransaction_serial_number()); // // 订单id // String transactionSerialNumber = endCharge.getTransaction_serial_number(); // ChargingOrderMessage chargingOrderMessage = new ChargingOrderMessage(); // chargingOrderMessage.setOrderNumber(transactionSerialNumber); // // 推送充电订单信息 // ChargingMessage chargingMessage1 = new ChargingMessage(); // chargingMessage1.setServiceId(SendTagConstant.ORDER_INFO); // chargingMessage1.setOrderMessage(chargingOrderMessage); // enhanceProduce.orderInfoMessage(chargingMessage1); // // 推送充电订单状态 // ChargingMessage chargingMessage2 = new ChargingMessage(); // chargingMessage2.setServiceId(SendTagConstant.ORDER_STATUS); // chargingMessage2.setOrderMessage(chargingOrderMessage); // enhanceProduce.orderStatusMessage(chargingMessage2); //// ThreadPoolExecutor threadPoolExecutor1 = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()); //// threadPoolExecutor1.execute(new Runnable() { //// @Override //// public void run() { //// try { //// TChargingOrder chargingOrder = chargingOrderClient.getOrderByCode(endCharge.getTransaction_serial_number()).getData(); //// tcecPushUtil.pushSuperviseNotificationChargeOrderInfo(chargingOrder); //// tcecPushUtil.pushSuperviseNotificationEquipChargeStatus(chargingOrder); //// }catch (Exception e){ //// e.printStackTrace(); //// System.out.println("充电结束推送监管平台失败:"+e.getMessage()); //// } //// } //// }); // break; // case SendTagConstant.ERROR_MESSAGE: // ErrorMessageMessage errorMessageMessage1 = message.getErrorMessageMessage(); // log.info("错误报文-业务消息处理:{}",errorMessageMessage1); // // 持久化消息 // ErrorMessageMessage errorMessageMessage = new ErrorMessageMessage(); // BeanUtils.copyProperties(errorMessageMessage1,errorMessageMessage); // errorMessageMessageService.create(errorMessageMessage); // break; // case SendTagConstant.BILLING_MODE_VERIFY: // BillingModeVerifyMessage billingModeVerifyMessage = message.getBillingModeVerifyMessage(); // log.info("计费模型验证请求-业务消息处理:{}",billingModeVerifyMessage); // // 持久化消息 // BillingModeVerify billingModeVerify = new BillingModeVerify(); // BeanUtils.copyProperties(billingModeVerifyMessage,billingModeVerify); // billingModeVerifyService.create(billingModeVerify); // break; // case SendTagConstant.ACQUISITION_BILLING_MODE: // AcquisitionBillingModeMessage acquisitionBillingModeMessage = message.getAcquisitionBillingModeMessage(); // log.info("充电桩计费模型请求-业务消息处理:{}",acquisitionBillingModeMessage); // // 持久化消息 // AcquisitionBillingMode acquisitionBillingMode = new AcquisitionBillingMode(); // BeanUtils.copyProperties(acquisitionBillingModeMessage,acquisitionBillingMode); // acquisitionBillingModeService.create(acquisitionBillingMode); // break; // case SendTagConstant.UPLOAD_REAL_TIME_MONITORING_DATA: // try { // UploadRealTimeMonitoringDataMessage uploadRealTimeMonitoringDataMessage = message.getUploadRealTimeMonitoringDataMessage(); // log.info("上传实时监测数据-业务消息处理:{}",uploadRealTimeMonitoringDataMessage); // // 持久化消息 // UploadRealTimeMonitoringData uploadRealTimeMonitoringData = new UploadRealTimeMonitoringData(); // BeanUtils.copyProperties(uploadRealTimeMonitoringDataMessage,uploadRealTimeMonitoringData); // // 查询mogondb上一条数据 // UploadRealTimeMonitoringData data = uploadRealTimeMonitoringDataService.getLastDataById(uploadRealTimeMonitoringDataMessage.getTransaction_serial_number()); // // 查询订单 // TChargingOrder chargingOrder = chargingOrderClient.getOrderByCode(uploadRealTimeMonitoringDataMessage.getTransaction_serial_number()).getData(); // // 查询当前时间段的计费策略 // TAccountingStrategyDetail accountingStrategyDetail = accountingStrategyDetailClient.getDetailBySiteId(chargingOrder.getSiteId()).getData(); // uploadRealTimeMonitoringData.setElectrovalence_all(accountingStrategyDetail.getElectrovalence()); // uploadRealTimeMonitoringData.setService_charge(accountingStrategyDetail.getServiceCharge()); // if (Objects.nonNull(data)) { // uploadRealTimeMonitoringDataService.updateById(data.getId()); // uploadRealTimeMonitoringData.setPeriod_electric_price(uploadRealTimeMonitoringDataMessage.getPaid_amount().subtract(data.getPaid_amount())); // uploadRealTimeMonitoringData.setPeriod_charging_degree(uploadRealTimeMonitoringDataMessage.getCharging_degree().subtract(data.getCharging_degree())); // uploadRealTimeMonitoringData.setPeriod_service_price(uploadRealTimeMonitoringDataMessage.getCharging_degree().multiply(accountingStrategyDetail.getServiceCharge()).setScale(4, RoundingMode.HALF_UP)); // }else { // log.info("首次上传实时监测数据"); // uploadRealTimeMonitoringData.setPeriod_electric_price(uploadRealTimeMonitoringDataMessage.getPaid_amount()); // uploadRealTimeMonitoringData.setPeriod_charging_degree(uploadRealTimeMonitoringDataMessage.getCharging_degree()); // uploadRealTimeMonitoringData.setPeriod_service_price(uploadRealTimeMonitoringDataMessage.getCharging_degree().multiply(accountingStrategyDetail.getServiceCharge()).setScale(4, RoundingMode.HALF_UP)); // } // uploadRealTimeMonitoringData.setOrderType(chargingOrder.getOrderType()); // uploadRealTimeMonitoringData.setSiteId(chargingOrder.getSiteId()); // uploadRealTimeMonitoringData.setStatus(chargingOrder.getStatus()); //// uploadRealTimeMonitoringData.setStartTime(chargingOrder.getStartTime()); //// uploadRealTimeMonitoringData.setEndTime(chargingOrder.getEndTime()); // int i = uploadRealTimeMonitoringDataService.create(uploadRealTimeMonitoringData); // if(i == 0){ // log.error("数据存储mongo失败"); // } // // // 业务处理 // UploadRealTimeMonitoringDataQuery query = new UploadRealTimeMonitoringDataQuery(); // BeanUtils.copyProperties(uploadRealTimeMonitoringData, query); // chargingOrderClient.chargeMonitoring(query); // // 订单id // ChargingOrderMessage chargingOrderMessage3 = new ChargingOrderMessage(); // chargingOrderMessage3.setOrderNumber(chargingOrder.getCode()); // // 推送充电订单信息 // ChargingMessage chargingMessage4 = new ChargingMessage(); // chargingMessage4.setServiceId(SendTagConstant.ORDER_STATUS); // chargingMessage4.setOrderMessage(chargingOrderMessage3); // enhanceProduce.orderInfoMessage(chargingMessage4); //// ThreadPoolExecutor threadPoolExecutor2 = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()); //// threadPoolExecutor2.execute(new Runnable() { //// @Override //// public void run() { //// chargingOrder.setEndSoc(uploadRealTimeMonitoringDataMessage.getSoc()+""); //// //// tcecPushUtil.pushSuperviseNotificationEquipChargeStatus(chargingOrder); //// } //// }); // } catch (Exception e) { // e.printStackTrace(); // } // break; // case SendTagConstant.CHARGING_HANDSHAKE: // ChargingHandshakeMessage chargingHandshakeMessage = message.getChargingHandshakeMessage(); // log.info("充电握手-业务消息处理:{}",chargingHandshakeMessage); // // 持久化消息 // ChargingHandshake chargingHandshake = new ChargingHandshake(); // BeanUtils.copyProperties(chargingHandshakeMessage,chargingHandshake); // chargingHandshakeService.create(chargingHandshake); // break; // case SendTagConstant.PARAMETER_SETTING: // ParameterSettingMessage parameterSettingMessage = message.getParameterSettingMessage(); // log.info("业务消息处理:{}",parameterSettingMessage); // // 持久化消息 // ParameterSetting parameterSetting = new ParameterSetting(); // BeanUtils.copyProperties(parameterSettingMessage,parameterSetting); // parameterSettingService.create(parameterSetting); // break; // case SendTagConstant.BMS_ABORT: // BmsAbortMessage bmsAbortMessage = message.getBmsAbortMessage(); // log.info("充电阶段BMS中止-业务消息处理:{}",bmsAbortMessage); // // 持久化消息 // BmsAbort bmsAbort = new BmsAbort(); // BeanUtils.copyProperties(bmsAbortMessage,bmsAbort); // bmsAbortService.create(bmsAbort); // // ThreadPoolExecutor threadPoolExecutor3 = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()); // threadPoolExecutor3.execute(new Runnable() { // @Override // public void run() { // try { // TChargingOrder chargingOrder = chargingOrderClient.getOrderByCode(endCharge.getTransaction_serial_number()).getData(); // tcecPushUtil.pushSuperviseNotificationChargeOrderInfo(chargingOrder); // tcecPushUtil.pushSuperviseNotificationEquipChargeStatus(chargingOrder); // }catch (Exception e){ // e.printStackTrace(); // System.out.println("充电结束推送监管平台失败:"+e.getMessage()); // } // // 业务处理 // chargingOrderClient.excelEndCharge(bmsAbort.getTransaction_serial_number()); // } // }); break; case SendTagConstant.ERROR_MESSAGE: ErrorMessageMessage errorMessageMessage1 = message.getErrorMessageMessage(); log.info("错误报文-业务消息处理:{}",errorMessageMessage1); // 持久化消息 ErrorMessageMessage errorMessageMessage = new ErrorMessageMessage(); BeanUtils.copyProperties(errorMessageMessage1,errorMessageMessage); errorMessageMessageService.create(errorMessageMessage); break; case SendTagConstant.BILLING_MODE_VERIFY: BillingModeVerifyMessage billingModeVerifyMessage = message.getBillingModeVerifyMessage(); log.info("计费模型验证请求-业务消息处理:{}",billingModeVerifyMessage); // 持久化消息 BillingModeVerify billingModeVerify = new BillingModeVerify(); BeanUtils.copyProperties(billingModeVerifyMessage,billingModeVerify); billingModeVerifyService.create(billingModeVerify); break; case SendTagConstant.ACQUISITION_BILLING_MODE: AcquisitionBillingModeMessage acquisitionBillingModeMessage = message.getAcquisitionBillingModeMessage(); log.info("充电桩计费模型请求-业务消息处理:{}",acquisitionBillingModeMessage); // 持久化消息 AcquisitionBillingMode acquisitionBillingMode = new AcquisitionBillingMode(); BeanUtils.copyProperties(acquisitionBillingModeMessage,acquisitionBillingMode); acquisitionBillingModeService.create(acquisitionBillingMode); break; case SendTagConstant.UPLOAD_REAL_TIME_MONITORING_DATA: try { UploadRealTimeMonitoringDataMessage uploadRealTimeMonitoringDataMessage = message.getUploadRealTimeMonitoringDataMessage(); log.info("上传实时监测数据-业务消息处理:{}",uploadRealTimeMonitoringDataMessage); // 持久化消息 UploadRealTimeMonitoringData uploadRealTimeMonitoringData = new UploadRealTimeMonitoringData(); BeanUtils.copyProperties(uploadRealTimeMonitoringDataMessage,uploadRealTimeMonitoringData); // 查询mogondb上一条数据 UploadRealTimeMonitoringData data = uploadRealTimeMonitoringDataService.getLastDataById(uploadRealTimeMonitoringDataMessage.getTransaction_serial_number()); // 查询订单 TChargingOrder chargingOrder = chargingOrderClient.getOrderByCode(uploadRealTimeMonitoringDataMessage.getTransaction_serial_number()).getData(); // 查询当前时间段的计费策略 TAccountingStrategyDetail accountingStrategyDetail = accountingStrategyDetailClient.getDetailBySiteId(chargingOrder.getSiteId()).getData(); uploadRealTimeMonitoringData.setElectrovalence_all(accountingStrategyDetail.getElectrovalence()); uploadRealTimeMonitoringData.setService_charge(accountingStrategyDetail.getServiceCharge()); if (Objects.nonNull(data)) { uploadRealTimeMonitoringDataService.updateById(data.getId()); uploadRealTimeMonitoringData.setPeriod_electric_price(uploadRealTimeMonitoringDataMessage.getPaid_amount().subtract(data.getPaid_amount())); uploadRealTimeMonitoringData.setPeriod_charging_degree(uploadRealTimeMonitoringDataMessage.getCharging_degree().subtract(data.getCharging_degree())); uploadRealTimeMonitoringData.setPeriod_service_price(uploadRealTimeMonitoringDataMessage.getCharging_degree().multiply(accountingStrategyDetail.getServiceCharge()).setScale(4, RoundingMode.HALF_UP)); }else { log.info("首次上传实时监测数据"); uploadRealTimeMonitoringData.setPeriod_electric_price(uploadRealTimeMonitoringDataMessage.getPaid_amount()); uploadRealTimeMonitoringData.setPeriod_charging_degree(uploadRealTimeMonitoringDataMessage.getCharging_degree()); uploadRealTimeMonitoringData.setPeriod_service_price(uploadRealTimeMonitoringDataMessage.getCharging_degree().multiply(accountingStrategyDetail.getServiceCharge()).setScale(4, RoundingMode.HALF_UP)); } uploadRealTimeMonitoringData.setOrderType(chargingOrder.getOrderType()); uploadRealTimeMonitoringData.setSiteId(chargingOrder.getSiteId()); uploadRealTimeMonitoringData.setStatus(chargingOrder.getStatus()); // uploadRealTimeMonitoringData.setStartTime(chargingOrder.getStartTime()); // uploadRealTimeMonitoringData.setEndTime(chargingOrder.getEndTime()); int i = uploadRealTimeMonitoringDataService.create(uploadRealTimeMonitoringData); if(i == 0){ log.error("数据存储mongo失败"); } // 业务处理 UploadRealTimeMonitoringDataQuery query = new UploadRealTimeMonitoringDataQuery(); BeanUtils.copyProperties(uploadRealTimeMonitoringData, query); chargingOrderClient.chargeMonitoring(query); // 订单id ChargingOrderMessage chargingOrderMessage3 = new ChargingOrderMessage(); chargingOrderMessage3.setOrderNumber(chargingOrder.getCode()); // 推送充电订单信息 ChargingMessage chargingMessage4 = new ChargingMessage(); chargingMessage4.setServiceId(SendTagConstant.ORDER_STATUS); chargingMessage4.setOrderMessage(chargingOrderMessage3); enhanceProduce.orderInfoMessage(chargingMessage4); // ThreadPoolExecutor threadPoolExecutor2 = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()); // threadPoolExecutor2.execute(new Runnable() { // @Override // public void run() { // chargingOrder.setEndSoc(uploadRealTimeMonitoringDataMessage.getSoc()+""); // break; // case SendTagConstant.MOTOR_ABORT: // MotorAbortMessage motorAbortMessage = message.getMotorAbortMessage(); // log.info("充电阶段充电机中止-业务消息处理:{}",motorAbortMessage); // // 持久化消息 // MotorAbort motorAbort = new MotorAbort(); // BeanUtils.copyProperties(motorAbortMessage,motorAbort); // motorAbortService.create(motorAbort); // // 业务处理 // chargingOrderClient.excelEndCharge(motorAbort.getTransaction_serial_number()); // break; // case SendTagConstant.BMS_DEMAND_AND_CHARGER_EXPORTATION: // BmsDemandAndChargerExportationMessage bmsDemandAndChargerExportationMessage = message.getBmsDemandAndChargerExportationMessage(); // log.info("充电过程BMS需求、充电机输出-业务消息处理:{}",bmsDemandAndChargerExportationMessage); // // 持久化消息 // BmsDemandAndChargerExportation bmsDemandAndChargerExportation = new BmsDemandAndChargerExportation(); // BeanUtils.copyProperties(bmsDemandAndChargerExportationMessage,bmsDemandAndChargerExportation); // bmsDemandAndChargerExportationService.create(bmsDemandAndChargerExportation); // // tcecPushUtil.pushSuperviseNotificationEquipChargeStatus(chargingOrder); // } // }); } catch (Exception e) { e.printStackTrace(); } break; case SendTagConstant.CHARGING_HANDSHAKE: ChargingHandshakeMessage chargingHandshakeMessage = message.getChargingHandshakeMessage(); log.info("充电握手-业务消息处理:{}",chargingHandshakeMessage); // 持久化消息 ChargingHandshake chargingHandshake = new ChargingHandshake(); BeanUtils.copyProperties(chargingHandshakeMessage,chargingHandshake); chargingHandshakeService.create(chargingHandshake); break; case SendTagConstant.PARAMETER_SETTING: ParameterSettingMessage parameterSettingMessage = message.getParameterSettingMessage(); log.info("业务消息处理:{}",parameterSettingMessage); // 持久化消息 ParameterSetting parameterSetting = new ParameterSetting(); BeanUtils.copyProperties(parameterSettingMessage,parameterSetting); parameterSettingService.create(parameterSetting); break; case SendTagConstant.BMS_ABORT: BmsAbortMessage bmsAbortMessage = message.getBmsAbortMessage(); log.info("充电阶段BMS中止-业务消息处理:{}",bmsAbortMessage); // 持久化消息 BmsAbort bmsAbort = new BmsAbort(); BeanUtils.copyProperties(bmsAbortMessage,bmsAbort); bmsAbortService.create(bmsAbort); ThreadPoolExecutor threadPoolExecutor3 = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()); threadPoolExecutor3.execute(new Runnable() { @Override public void run() { // 业务处理 chargingOrderClient.excelEndCharge(bmsAbort.getTransaction_serial_number()); } }); break; case SendTagConstant.MOTOR_ABORT: MotorAbortMessage motorAbortMessage = message.getMotorAbortMessage(); log.info("充电阶段充电机中止-业务消息处理:{}",motorAbortMessage); // 持久化消息 MotorAbort motorAbort = new MotorAbort(); BeanUtils.copyProperties(motorAbortMessage,motorAbort); motorAbortService.create(motorAbort); // 业务处理 chargingOrderClient.excelEndCharge(motorAbort.getTransaction_serial_number()); break; case SendTagConstant.BMS_DEMAND_AND_CHARGER_EXPORTATION: BmsDemandAndChargerExportationMessage bmsDemandAndChargerExportationMessage = message.getBmsDemandAndChargerExportationMessage(); log.info("充电过程BMS需求、充电机输出-业务消息处理:{}",bmsDemandAndChargerExportationMessage); // 持久化消息 BmsDemandAndChargerExportation bmsDemandAndChargerExportation = new BmsDemandAndChargerExportation(); BeanUtils.copyProperties(bmsDemandAndChargerExportationMessage,bmsDemandAndChargerExportation); bmsDemandAndChargerExportationService.create(bmsDemandAndChargerExportation); // 业务处理 TChargingOrder chargingOrderBms = chargingOrderClient.getOrderByCode(bmsDemandAndChargerExportationMessage.getTransaction_serial_number()).getData(); if(Objects.nonNull(chargingOrderBms)){ chargingOrderBms.setNeedElec(bmsDemandAndChargerExportationMessage.getBms_current_requirements()); chargingOrderClient.updateChargingOrder(chargingOrderBms); } break; case SendTagConstant.BMS_INFORMATION: BmsInformationMessage bmsInformationMessage = message.getBmsInformationMessage(); log.info("充电过程BMS信息-业务消息处理:{}",bmsInformationMessage); // 持久化消息 BmsInformation bmsInformation = new BmsInformation(); BeanUtils.copyProperties(bmsInformationMessage,bmsInformation); bmsInformationService.create(bmsInformation); break; case SendTagConstant.CHARGING_PILE_STARTS_CHARGING: ChargingPileStartsChargingMessage chargingPileStartsChargingMessage = message.getChargingPileStartsChargingMessage(); log.info("充电桩主动申请启动充电-业务消息处理:{}",chargingPileStartsChargingMessage); // 持久化消息 ChargingPileStartsCharging chargingPileStartsCharging = new ChargingPileStartsCharging(); BeanUtils.copyProperties(chargingPileStartsChargingMessage,chargingPileStartsCharging); chargingPileStartsChargingService.create(chargingPileStartsCharging); break; case SendTagConstant.PLATFORM_START_CHARGING_REPLY: PlatformStartChargingReplyMessage platformStartChargingReplyMessage = message.getPlatformStartChargingReplyMessage(); log.info("远程启机命令回复-业务消息处理:{}",platformStartChargingReplyMessage); // 持久化消息 PlatformStartChargingReply platformStartChargingReply = new PlatformStartChargingReply(); BeanUtils.copyProperties(platformStartChargingReplyMessage,platformStartChargingReply); platformStartChargingReplyService.create(platformStartChargingReply); // 业务处理 PlatformStartChargingReplyMessageVO message1 = new PlatformStartChargingReplyMessageVO(); BeanUtils.copyProperties(platformStartChargingReplyMessage, message1); chargingOrderClient.startChargeSuccessfully(message1); break; case SendTagConstant.PLATFORM_STOP_CHARGING_REPLY: PlatformStopChargingReplyMessage platformStopChargingReplyMessage = message.getPlatformStopChargingReplyMessage(); log.info("远程停机命令回复-业务消息处理:{}",platformStopChargingReplyMessage); // 持久化消息 PlatformStopChargingReply platformStopChargingReply = new PlatformStopChargingReply(); BeanUtils.copyProperties(platformStopChargingReplyMessage,platformStopChargingReply); platformStopChargingReplyService.create(platformStopChargingReply); PlatformStopChargingReplyVO platformStopChargingReply1 = new PlatformStopChargingReplyVO(); BeanUtils.copyProperties(platformStopChargingReply, platformStopChargingReply1); chargingOrderClient.terminateSuccessfulResponse(platformStopChargingReply1); break; case SendTagConstant.TRANSACTION_RECORD: TransactionRecordMessage transactionRecordMessage = message.getTransactionRecordMessage(); log.info("交易记录-业务消息处理:{}",transactionRecordMessage); transactionRecordMessage.setResult(JSONObject.toJSONString(message)); // 持久化消息 TransactionRecord transactionRecord = new TransactionRecord(); BeanUtils.copyProperties(transactionRecordMessage,transactionRecord); transactionRecordService.create(transactionRecord); // 业务处理 TChargingOrder chargingOrderRecord = chargingOrderClient.getOrderByCode(transactionRecordMessage.getTransaction_serial_number()).getData(); if(Objects.nonNull(chargingOrderRecord)){ chargingOrderRecord.setTotalElectricity(transactionRecordMessage.getTotal_electricity()); chargingOrderClient.updateChargingOrder(chargingOrderRecord); } //计算费用 TransactionRecordMessageVO vo = new TransactionRecordMessageVO(); BeanUtils.copyProperties(transactionRecordMessage,vo); int code = chargingOrderClient.endChargeBillingCharge(vo).getCode(); if(200 != code){ //失败后添加到队列中继续处理数据 redisTemplate.opsForSet().add(SendTagConstant.TRANSACTION_RECORD, transactionRecordMessage.getTransaction_serial_number()); } // 添加实时上传记录结束记录 // 查询mogondb上一条数据 UploadRealTimeMonitoringData data = uploadRealTimeMonitoringDataService.getLastDataById(transactionRecordMessage.getTransaction_serial_number()); if(Objects.nonNull(data) && data.getStatus() != 5){ UploadRealTimeMonitoringData uploadRealTimeMonitoringData = new UploadRealTimeMonitoringData(); BeanUtils.copyProperties(data,uploadRealTimeMonitoringData); uploadRealTimeMonitoringData.setStatus(5); uploadRealTimeMonitoringDataService.create(uploadRealTimeMonitoringData); } break; case SendTagConstant.UPDATE_BALANCE_REPLY: UpdateBalanceReplyMessage updateBalanceReplyMessage = message.getUpdateBalanceReplyMessage(); log.info("余额更新应答-业务消息处理:{}",updateBalanceReplyMessage); // 持久化消息 UpdateBalanceReply updateBalanceReply = new UpdateBalanceReply(); BeanUtils.copyProperties(updateBalanceReplyMessage,updateBalanceReply); updateBalanceReplyService.create(updateBalanceReply); break; case SendTagConstant.SYNCHRONIZE_OFFLINE_CARD_REPLY: SynchronizeOfflineCardReplyMessage synchronizeOfflineCardReplyMessage = message.getSynchronizeOfflineCardReplyMessage(); log.info("卡数据同步应答-业务消息处理:{}",synchronizeOfflineCardReplyMessage); // 持久化消息 SynchronizeOfflineCardReply synchronizeOfflineCardReply = new SynchronizeOfflineCardReply(); BeanUtils.copyProperties(synchronizeOfflineCardReplyMessage,synchronizeOfflineCardReply); synchronizeOfflineCardReplyService.create(synchronizeOfflineCardReply); break; case SendTagConstant.CLEAR_OFFLINE_CARD_REPLY: ClearOfflineCardReplyMessage clearOfflineCardReplyMessage = message.getClearOfflineCardReplyMessage(); log.info("离线卡数据清除应答-业务消息处理:{}",clearOfflineCardReplyMessage); // 持久化消息 ClearOfflineCardReply clearOfflineCardReply = new ClearOfflineCardReply(); BeanUtils.copyProperties(clearOfflineCardReplyMessage,clearOfflineCardReply); clearOfflineCardReplyService.create(clearOfflineCardReply); break; case SendTagConstant.WORKING_PARAMETER_SETTING_REPLY: WorkingParameterSettingReplyMessage workingParameterSettingReplyMessage = message.getWorkingParameterSettingReplyMessage(); log.info("充电桩工作参数设置应答-业务消息处理:{}",workingParameterSettingReplyMessage); // 持久化消息 WorkingParameterSettingReply workingParameterSettingReply = new WorkingParameterSettingReply(); BeanUtils.copyProperties(workingParameterSettingReplyMessage,workingParameterSettingReply); workingParameterSettingReplyService.create(workingParameterSettingReply); break; case SendTagConstant.TIMING_SETTING: TimingSettingMessage timingSettingMessage = message.getTimingSettingMessage(); log.info("对时设置-业务消息处理:{}",timingSettingMessage); // 持久化消息 TimingSetting timingSetting = new TimingSetting(); BeanUtils.copyProperties(timingSettingMessage,timingSetting); timingSettingService.create(timingSetting); break; case SendTagConstant.SETUP_BILLING_MODEL_REPLY: SetupBillingModelReplyMessage setupBillingModelReplyMessage = message.getSetupBillingModelReplyMessage(); log.info("计费模型应答-业务消息处理:{}",setupBillingModelReplyMessage); // 持久化消息 SetupBillingModelReply setupBillingModelReply = new SetupBillingModelReply(); BeanUtils.copyProperties(setupBillingModelReplyMessage,setupBillingModelReply); setupBillingModelReplyService.create(setupBillingModelReply); break; case SendTagConstant.GROUND_LOCK_REAL_TIME_DATA: GroundLockRealTimeDataMessage groundLockRealTimeDataMessage = message.getGroundLockRealTimeDataMessage(); log.info("地锁数据上送(充电桩上送)-业务消息处理:{}",groundLockRealTimeDataMessage); // 持久化消息 GroundLockRealTimeData groundLockRealTimeData = new GroundLockRealTimeData(); BeanUtils.copyProperties(groundLockRealTimeDataMessage,groundLockRealTimeData); groundLockRealTimeDataService.create(groundLockRealTimeData); break; case SendTagConstant.CHARGING_PILE_RETURNS_GROUND_LOCK_DATA: ChargingPileReturnsGroundLockDataMessage chargingPileReturnsGroundLockDataMessage = message.getChargingPileReturnsGroundLockDataMessage(); log.info("充电桩返回数据(上行)-业务消息处理:{}",chargingPileReturnsGroundLockDataMessage); // 持久化消息 ChargingPileReturnsGroundLockData chargingPileReturnsGroundLockData = new ChargingPileReturnsGroundLockData(); BeanUtils.copyProperties(chargingPileReturnsGroundLockDataMessage,chargingPileReturnsGroundLockData); chargingPileReturnsGroundLockDataService.create(chargingPileReturnsGroundLockData); break; case SendTagConstant.PLATFORM_RESTART_REPLY: PlatformRestartReplyMessage platformRestartReplyMessage = message.getPlatformRestartReplyMessage(); log.info("远程重启应答-业务消息处理:{}",platformRestartReplyMessage); // 持久化消息 PlatformRestartReply platformRestartReply = new PlatformRestartReply(); BeanUtils.copyProperties(platformRestartReplyMessage,platformRestartReply); platformRestartReplyService.create(platformRestartReply); break; case SendTagConstant.QR_CODE_DELIVERY_REPLY: QrCodeDeliveryReplyMessage qrCodeDeliveryReplyMessage = message.getQrCodeDeliveryReplyMessage(); log.info("二维码下发应答-业务消息处理:{}",qrCodeDeliveryReplyMessage); QrCodeDeliveryReply qrCodeDeliveryReply = new QrCodeDeliveryReply(); BeanUtils.copyProperties(qrCodeDeliveryReplyMessage,qrCodeDeliveryReply); qrCodeDeliveryReplyService.create(qrCodeDeliveryReply); break; case SendTagConstant.SECURITY_DETECTION: SecurityDetectionMessage securityDetectionMessage = message.getSecurityDetectionMessage(); log.info("安全监测-业务消息处理:{}",securityDetectionMessage); SecurityDetection securityDetection = new SecurityDetection(); BeanUtils.copyProperties(securityDetectionMessage,securityDetection); securityDetectionService.create(securityDetection); SecurityDetectionVO securityDetection1 = new SecurityDetectionVO(); BeanUtils.copyProperties(securityDetection, securityDetection1); chargingOrderClient.securityDetection(securityDetection1); break; default: PlatformRemoteUpdateReplyMessage platformRemoteUpdateReplyMessage = message.getPlatformRemoteUpdateReplyMessage(); log.info("远程更新应答-业务消息处理:{}",platformRemoteUpdateReplyMessage); PlatformRemoteUpdateReply platformRemoteUpdateReply = new PlatformRemoteUpdateReply(); BeanUtils.copyProperties(platformRemoteUpdateReplyMessage,platformRemoteUpdateReply); platformRemoteUpdateReplyService.create(platformRemoteUpdateReply); break; } } } // // 业务处理 // TChargingOrder chargingOrderBms = chargingOrderClient.getOrderByCode(bmsDemandAndChargerExportationMessage.getTransaction_serial_number()).getData(); // if(Objects.nonNull(chargingOrderBms)){ // chargingOrderBms.setNeedElec(bmsDemandAndChargerExportationMessage.getBms_current_requirements()); // chargingOrderClient.updateChargingOrder(chargingOrderBms); // } // break; // case SendTagConstant.BMS_INFORMATION: // BmsInformationMessage bmsInformationMessage = message.getBmsInformationMessage(); // log.info("充电过程BMS信息-业务消息处理:{}",bmsInformationMessage); // // 持久化消息 // BmsInformation bmsInformation = new BmsInformation(); // BeanUtils.copyProperties(bmsInformationMessage,bmsInformation); // bmsInformationService.create(bmsInformation); // break; // case SendTagConstant.CHARGING_PILE_STARTS_CHARGING: // ChargingPileStartsChargingMessage chargingPileStartsChargingMessage = message.getChargingPileStartsChargingMessage(); // log.info("充电桩主动申请启动充电-业务消息处理:{}",chargingPileStartsChargingMessage); // // 持久化消息 // ChargingPileStartsCharging chargingPileStartsCharging = new ChargingPileStartsCharging(); // BeanUtils.copyProperties(chargingPileStartsChargingMessage,chargingPileStartsCharging); // chargingPileStartsChargingService.create(chargingPileStartsCharging); // break; // case SendTagConstant.PLATFORM_START_CHARGING_REPLY: // PlatformStartChargingReplyMessage platformStartChargingReplyMessage = message.getPlatformStartChargingReplyMessage(); // log.info("远程启机命令回复-业务消息处理:{}",platformStartChargingReplyMessage); // // 持久化消息 // PlatformStartChargingReply platformStartChargingReply = new PlatformStartChargingReply(); // BeanUtils.copyProperties(platformStartChargingReplyMessage,platformStartChargingReply); // platformStartChargingReplyService.create(platformStartChargingReply); // // // 业务处理 // PlatformStartChargingReplyMessageVO message1 = new PlatformStartChargingReplyMessageVO(); // BeanUtils.copyProperties(platformStartChargingReplyMessage, message1); // chargingOrderClient.startChargeSuccessfully(message1); // break; // case SendTagConstant.PLATFORM_STOP_CHARGING_REPLY: // PlatformStopChargingReplyMessage platformStopChargingReplyMessage = message.getPlatformStopChargingReplyMessage(); // log.info("远程停机命令回复-业务消息处理:{}",platformStopChargingReplyMessage); // // 持久化消息 // PlatformStopChargingReply platformStopChargingReply = new PlatformStopChargingReply(); // BeanUtils.copyProperties(platformStopChargingReplyMessage,platformStopChargingReply); // platformStopChargingReplyService.create(platformStopChargingReply); // // PlatformStopChargingReplyVO platformStopChargingReply1 = new PlatformStopChargingReplyVO(); // BeanUtils.copyProperties(platformStopChargingReply, platformStopChargingReply1); // chargingOrderClient.terminateSuccessfulResponse(platformStopChargingReply1); // break; // case SendTagConstant.TRANSACTION_RECORD: // TransactionRecordMessage transactionRecordMessage = message.getTransactionRecordMessage(); // log.info("交易记录-业务消息处理:{}",transactionRecordMessage); // transactionRecordMessage.setResult(JSONObject.toJSONString(message)); // // 持久化消息 // TransactionRecord transactionRecord = new TransactionRecord(); // BeanUtils.copyProperties(transactionRecordMessage,transactionRecord); // transactionRecordService.create(transactionRecord); // // // 业务处理 // TChargingOrder chargingOrderRecord = chargingOrderClient.getOrderByCode(transactionRecordMessage.getTransaction_serial_number()).getData(); // if(Objects.nonNull(chargingOrderRecord)){ // chargingOrderRecord.setTotalElectricity(transactionRecordMessage.getTotal_electricity()); // chargingOrderClient.updateChargingOrder(chargingOrderRecord); // } // //计算费用 // TransactionRecordMessageVO vo = new TransactionRecordMessageVO(); // BeanUtils.copyProperties(transactionRecordMessage,vo); // int code = chargingOrderClient.endChargeBillingCharge(vo).getCode(); // if(200 != code){ // //失败后添加到队列中继续处理数据 // redisTemplate.opsForSet().add(SendTagConstant.TRANSACTION_RECORD, transactionRecordMessage.getTransaction_serial_number()); // } // // // // 添加实时上传记录结束记录 // // 查询mogondb上一条数据 // UploadRealTimeMonitoringData data = uploadRealTimeMonitoringDataService.getLastDataById(transactionRecordMessage.getTransaction_serial_number()); // if(Objects.nonNull(data) && data.getStatus() != 5){ // UploadRealTimeMonitoringData uploadRealTimeMonitoringData = new UploadRealTimeMonitoringData(); // BeanUtils.copyProperties(data,uploadRealTimeMonitoringData); // uploadRealTimeMonitoringData.setStatus(5); // uploadRealTimeMonitoringDataService.create(uploadRealTimeMonitoringData); // } // break; // case SendTagConstant.UPDATE_BALANCE_REPLY: // UpdateBalanceReplyMessage updateBalanceReplyMessage = message.getUpdateBalanceReplyMessage(); // log.info("余额更新应答-业务消息处理:{}",updateBalanceReplyMessage); // // 持久化消息 // UpdateBalanceReply updateBalanceReply = new UpdateBalanceReply(); // BeanUtils.copyProperties(updateBalanceReplyMessage,updateBalanceReply); // updateBalanceReplyService.create(updateBalanceReply); // break; // case SendTagConstant.SYNCHRONIZE_OFFLINE_CARD_REPLY: // SynchronizeOfflineCardReplyMessage synchronizeOfflineCardReplyMessage = message.getSynchronizeOfflineCardReplyMessage(); // log.info("卡数据同步应答-业务消息处理:{}",synchronizeOfflineCardReplyMessage); // // 持久化消息 // SynchronizeOfflineCardReply synchronizeOfflineCardReply = new SynchronizeOfflineCardReply(); // BeanUtils.copyProperties(synchronizeOfflineCardReplyMessage,synchronizeOfflineCardReply); // synchronizeOfflineCardReplyService.create(synchronizeOfflineCardReply); // break; // case SendTagConstant.CLEAR_OFFLINE_CARD_REPLY: // ClearOfflineCardReplyMessage clearOfflineCardReplyMessage = message.getClearOfflineCardReplyMessage(); // log.info("离线卡数据清除应答-业务消息处理:{}",clearOfflineCardReplyMessage); // // 持久化消息 // ClearOfflineCardReply clearOfflineCardReply = new ClearOfflineCardReply(); // BeanUtils.copyProperties(clearOfflineCardReplyMessage,clearOfflineCardReply); // clearOfflineCardReplyService.create(clearOfflineCardReply); // break; // case SendTagConstant.WORKING_PARAMETER_SETTING_REPLY: // WorkingParameterSettingReplyMessage workingParameterSettingReplyMessage = message.getWorkingParameterSettingReplyMessage(); // log.info("充电桩工作参数设置应答-业务消息处理:{}",workingParameterSettingReplyMessage); // // 持久化消息 // WorkingParameterSettingReply workingParameterSettingReply = new WorkingParameterSettingReply(); // BeanUtils.copyProperties(workingParameterSettingReplyMessage,workingParameterSettingReply); // workingParameterSettingReplyService.create(workingParameterSettingReply); // break; // case SendTagConstant.TIMING_SETTING: // TimingSettingMessage timingSettingMessage = message.getTimingSettingMessage(); // log.info("对时设置-业务消息处理:{}",timingSettingMessage); // // 持久化消息 // TimingSetting timingSetting = new TimingSetting(); // BeanUtils.copyProperties(timingSettingMessage,timingSetting); // timingSettingService.create(timingSetting); // break; // case SendTagConstant.SETUP_BILLING_MODEL_REPLY: // SetupBillingModelReplyMessage setupBillingModelReplyMessage = message.getSetupBillingModelReplyMessage(); // log.info("计费模型应答-业务消息处理:{}",setupBillingModelReplyMessage); // // 持久化消息 // SetupBillingModelReply setupBillingModelReply = new SetupBillingModelReply(); // BeanUtils.copyProperties(setupBillingModelReplyMessage,setupBillingModelReply); // setupBillingModelReplyService.create(setupBillingModelReply); // break; // case SendTagConstant.GROUND_LOCK_REAL_TIME_DATA: // GroundLockRealTimeDataMessage groundLockRealTimeDataMessage = message.getGroundLockRealTimeDataMessage(); // log.info("地锁数据上送(充电桩上送)-业务消息处理:{}",groundLockRealTimeDataMessage); // // 持久化消息 // GroundLockRealTimeData groundLockRealTimeData = new GroundLockRealTimeData(); // BeanUtils.copyProperties(groundLockRealTimeDataMessage,groundLockRealTimeData); // groundLockRealTimeDataService.create(groundLockRealTimeData); // break; // case SendTagConstant.CHARGING_PILE_RETURNS_GROUND_LOCK_DATA: // ChargingPileReturnsGroundLockDataMessage chargingPileReturnsGroundLockDataMessage = message.getChargingPileReturnsGroundLockDataMessage(); // log.info("充电桩返回数据(上行)-业务消息处理:{}",chargingPileReturnsGroundLockDataMessage); // // 持久化消息 // ChargingPileReturnsGroundLockData chargingPileReturnsGroundLockData = new ChargingPileReturnsGroundLockData(); // BeanUtils.copyProperties(chargingPileReturnsGroundLockDataMessage,chargingPileReturnsGroundLockData); // chargingPileReturnsGroundLockDataService.create(chargingPileReturnsGroundLockData); // break; // case SendTagConstant.PLATFORM_RESTART_REPLY: // PlatformRestartReplyMessage platformRestartReplyMessage = message.getPlatformRestartReplyMessage(); // log.info("远程重启应答-业务消息处理:{}",platformRestartReplyMessage); // // 持久化消息 // PlatformRestartReply platformRestartReply = new PlatformRestartReply(); // BeanUtils.copyProperties(platformRestartReplyMessage,platformRestartReply); // platformRestartReplyService.create(platformRestartReply); // break; // case SendTagConstant.QR_CODE_DELIVERY_REPLY: // QrCodeDeliveryReplyMessage qrCodeDeliveryReplyMessage = message.getQrCodeDeliveryReplyMessage(); // log.info("二维码下发应答-业务消息处理:{}",qrCodeDeliveryReplyMessage); // QrCodeDeliveryReply qrCodeDeliveryReply = new QrCodeDeliveryReply(); // BeanUtils.copyProperties(qrCodeDeliveryReplyMessage,qrCodeDeliveryReply); // qrCodeDeliveryReplyService.create(qrCodeDeliveryReply); // break; // case SendTagConstant.SECURITY_DETECTION: // SecurityDetectionMessage securityDetectionMessage = message.getSecurityDetectionMessage(); // log.info("安全监测-业务消息处理:{}",securityDetectionMessage); // SecurityDetection securityDetection = new SecurityDetection(); // BeanUtils.copyProperties(securityDetectionMessage,securityDetection); // securityDetectionService.create(securityDetection); // // SecurityDetectionVO securityDetection1 = new SecurityDetectionVO(); // BeanUtils.copyProperties(securityDetection, securityDetection1); // chargingOrderClient.securityDetection(securityDetection1); // break; // default: // PlatformRemoteUpdateReplyMessage platformRemoteUpdateReplyMessage = message.getPlatformRemoteUpdateReplyMessage(); // log.info("远程更新应答-业务消息处理:{}",platformRemoteUpdateReplyMessage); // PlatformRemoteUpdateReply platformRemoteUpdateReply = new PlatformRemoteUpdateReply(); // BeanUtils.copyProperties(platformRemoteUpdateReplyMessage,platformRemoteUpdateReply); // platformRemoteUpdateReplyService.create(platformRemoteUpdateReply); // break; // } // } // // //} ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/util/RocketMQEnhanceTemplate.java
@@ -64,7 +64,7 @@ Message<T> sendMessage = MessageBuilder.withPayload(message).setHeader(RocketMQHeaders.TAGS, message.getKey()).build(); SendResult sendResult = template.syncSend(destination, sendMessage); // 此处为了方便查看给日志转了json,根据选择选择日志记录方式,例如ELK采集 log.info("[{}]同步消息[{}]发送结果[{}]", destination, JSONObject.toJSON(message), JSONObject.toJSON(sendResult)); log.info("[{}]同步消息[{}]---->发送结果[{}]", destination, JSONObject.toJSON(message), JSONObject.toJSON(sendResult)); return sendResult; } ruoyi-service/ruoyi-integration/src/test/java/com/ruoyi/integration/RuoYiIntegrationApplicationTests.java
@@ -30,10 +30,12 @@ import com.ruoyi.other.api.domain.Operator; import com.ruoyi.other.api.feignClient.OperatorClient; import lombok.extern.slf4j.Slf4j; import org.apache.rocketmq.spring.core.RocketMQTemplate; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cglib.core.Local; import org.springframework.messaging.support.MessageBuilder; import org.springframework.util.StringUtils; import javax.annotation.Resource; @@ -50,395 +52,5 @@ @Slf4j @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = RuoYiIntegrationApplication.class) public class RuoYiIntegrationApplicationTests { @Resource private UploadRealTimeMonitoringDataService uploadRealTimeMonitoringDataService; @Resource private ParkingOrderService parkingOrderService; @Resource private SiteClient siteClient; @Resource private ChargingGunClient chargingGunClient; @Resource private ChargingOrderClient chargingOrderClient; @Resource private OperatorClient operatorClient; @Test public void test(){ /** * 推送充电设备接口状态信息 * @param chargingGun * @return */ List<TChargingGun> data = chargingGunClient.getAllGun().getData(); TChargingGun chargingGun = data.stream().filter(e -> e.getId() == 61).findFirst().orElse(new TChargingGun()); ConnectorStatusInfo connectorStatusInfo = new ConnectorStatusInfo(); connectorStatusInfo.setOperatorID("906171535"); connectorStatusInfo.setEquipmentOwnerID("906171535"); connectorStatusInfo.setStationID(String.valueOf(chargingGun.getSiteId())); connectorStatusInfo.setEquipmentID(String.valueOf(chargingGun.getChargingPileId())); connectorStatusInfo.setConnectorID(chargingGun.getFullNumber()); connectorStatusInfo.setEquipmentClassification(1); switch (chargingGun.getStatus()){ case 1: connectorStatusInfo.setStatus(0); break; case 2: connectorStatusInfo.setStatus(1); break; case 3: connectorStatusInfo.setStatus(2); break; case 4: connectorStatusInfo.setStatus(3); break; case 5: connectorStatusInfo.setStatus(3); break; case 6: connectorStatusInfo.setStatus(4); break; case 7: connectorStatusInfo.setStatus(255); break; } connectorStatusInfo.setUpdateTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); // List<Operator> operators = operatorClient.getAllOperator().getData(); // for (Operator operator : operators) { tcecSuperviseUtil.notificationStationStatus(new Operator(), connectorStatusInfo); // } } @Autowired private TCECSuperviseUtil tcecSuperviseUtil; private final static String operatorId = "906171535"; @Test public void test1(){ TChargingOrder chargingOrder = chargingOrderClient.orderDetail(1884874763556048898L).getData(); SupEquipChargeStatus supEquipChargeStatus = new SupEquipChargeStatus(); supEquipChargeStatus.setOperatorID(operatorId); supEquipChargeStatus.setEquipmentOwnerID(operatorId); supEquipChargeStatus.setStationID(String.valueOf(chargingOrder.getSiteId())); supEquipChargeStatus.setEquipmentID(String.valueOf(chargingOrder.getChargingPileId())); supEquipChargeStatus.setOrderNo(operatorId+chargingOrder.getCode()); switch (chargingOrder.getStatus()){ case 2: supEquipChargeStatus.setConnectorStatus(1); break; case 3: supEquipChargeStatus.setConnectorStatus(2); break; case 4: supEquipChargeStatus.setConnectorStatus(3); break; case 5: supEquipChargeStatus.setConnectorStatus(4); break; } TChargingGun chargingGun = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData(); supEquipChargeStatus.setConnectorID(chargingGun.getFullNumber()); supEquipChargeStatus.setEquipmentClassification(1); supEquipChargeStatus.setPushTimeStamp(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); switch (chargingGun.getStatus()){ case 1: supEquipChargeStatus.setConnectorStatus(0); break; case 2: supEquipChargeStatus.setConnectorStatus(1); break; case 3: supEquipChargeStatus.setConnectorStatus(2); break; case 4: supEquipChargeStatus.setConnectorStatus(3); break; case 5: supEquipChargeStatus.setConnectorStatus(3); break; case 6: supEquipChargeStatus.setConnectorStatus(4); break; case 7: supEquipChargeStatus.setConnectorStatus(255); break; } supEquipChargeStatus.setCurrentA(chargingOrder.getCurrent()); supEquipChargeStatus.setSOC(StringUtils.hasLength(chargingOrder.getEndSoc())?new BigDecimal(chargingOrder.getEndSoc()):new BigDecimal("1")); supEquipChargeStatus.setStartTime(chargingOrder.getStartTime() != null ? chargingOrder.getStartTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) : ""); supEquipChargeStatus.setEndTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); supEquipChargeStatus.setTotalPower(chargingOrder.getElectrovalence()); tcecSuperviseUtil.notificationSupEquipChargeStatus(new Operator(), supEquipChargeStatus); } @Test public void test2(){ TChargingOrder chargingOrder = chargingOrderClient.orderDetail(1884874763556048898L).getData(); SupChargeOrderInfo supChargeOrderInfo = new SupChargeOrderInfo(); supChargeOrderInfo.setOperatorID(operatorId); supChargeOrderInfo.setEquipmentOwnerID(operatorId); supChargeOrderInfo.setStationID(String.valueOf(chargingOrder.getSiteId())); supChargeOrderInfo.setEquipmentID(String.valueOf(chargingOrder.getChargingPileId())); supChargeOrderInfo.setOrderNo(operatorId+chargingOrder.getCode()); TChargingGun chargingGun = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData(); supChargeOrderInfo.setConnectorID(chargingGun.getFullNumber()); supChargeOrderInfo.setEquipmentClassification(1); supChargeOrderInfo.setPushTimeStamp(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); supChargeOrderInfo.setStartTime(chargingOrder.getStartTime() != null ? chargingOrder.getStartTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) : ""); supChargeOrderInfo.setEndTime(chargingOrder.getEndTime() != null ? chargingOrder.getEndTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) : ""); supChargeOrderInfo.setTotalPower(chargingOrder.getElectrovalence()); supChargeOrderInfo.setTotalElecMoney(chargingOrder.getElectrovalence()); supChargeOrderInfo.setTotalServiceMoney(chargingOrder.getServiceCharge()); supChargeOrderInfo.setTotalMoney(chargingOrder.getOrderAmount()); supChargeOrderInfo.setOrderStatus(chargingOrder.getStatus()); switch (chargingOrder.getEndMode()){ case 0: supChargeOrderInfo.setStopReason(5); supChargeOrderInfo.setStopDesc("异常终止"); break; case 1: supChargeOrderInfo.setStopReason(0); supChargeOrderInfo.setStopDesc("用户手动停止充电"); break; case 2: supChargeOrderInfo.setStopReason(1); supChargeOrderInfo.setStopDesc("客户归属地运营商平台停止充电"); break; case 3: supChargeOrderInfo.setStopReason(1); supChargeOrderInfo.setStopDesc("费用不足中止"); break; } tcecSuperviseUtil.notificationChargeOrderInfo(new Operator(), supChargeOrderInfo); } @Test public void test3(){ StationStatsInfoResult res = new StationStatsInfoResult(); List<Site> data = siteClient.getSiteAll().getData(); LocalDateTime now = LocalDateTime.now(); LocalDateTime startLocalDateTime = now.minusDays(1); LocalDateTime endLocalDateTime = now.minusDays(1); LocalDateTime localDateTime1 = LocalDateTime.of(2025, 2, 3, 0, 0, 0); LocalDateTime localDateTime2 = LocalDateTime.of(2025, 2, 3, 23, 59, 59); // 获取今天凌晨 startLocalDateTime.withHour(0); startLocalDateTime.withMinute(0); startLocalDateTime.withSecond(0); startLocalDateTime.withMonth(1); startLocalDateTime.withDayOfMonth(28); String start = DateUtils.localDateTimeToString(startLocalDateTime); endLocalDateTime.withHour(23); endLocalDateTime.withMinute(59); endLocalDateTime.withSecond(59); startLocalDateTime.withMonth(1); startLocalDateTime.withDayOfMonth(28); String end = DateUtils.localDateTimeToString(endLocalDateTime); ChargingStatisticeDTO chargingStatisticeDTO = new ChargingStatisticeDTO(); chargingStatisticeDTO.setStartTime(localDateTime1); chargingStatisticeDTO.setEndTime(localDateTime2); List<TChargingOrder> data1 = chargingOrderClient.getChargingStatistics(chargingStatisticeDTO).getData(); List<StationStatsInfo> stationStatsInfos = new ArrayList<>(); String start1 = DateUtils.localDateTimeToString(localDateTime1); String start2 = DateUtils.localDateTimeToString(localDateTime2); for (Site datum : data) { StationStatsInfo stationStatsInfo = new StationStatsInfo(); stationStatsInfo.setStationID(datum.getId().toString()); stationStatsInfo.setEquipmentOwnerID("906171535"); stationStatsInfo.setOperatorID("906171535"); stationStatsInfo.setStationClassification(1); stationStatsInfo.setStartTime(start1); stationStatsInfo.setEndTime(start2); List<TChargingOrder> chargingOrders = data1.stream().filter(e -> e.getSiteId().equals(datum.getId())).collect(Collectors.toList()); // 充电电量 BigDecimal electricity = new BigDecimal("0"); int chargingCount = 0; for (TChargingOrder chargingOrder : chargingOrders) { if (chargingOrder.getElectricity()!=null){ electricity = electricity.add(chargingOrder.getElectricity()); chargingCount++; } } stationStatsInfo.setStationElectricity(electricity.divide(new BigDecimal("24"),4, BigDecimal.ROUND_DOWN)); stationStatsInfo.setStationTotalChargeEnergy(electricity.setScale(4, BigDecimal.ROUND_DOWN)); stationStatsInfo.setStationTotalWarningNum(0); stationStatsInfo.setStationTotalOtherEnergy(new BigDecimal("0")); stationStatsInfo.setStationTotalChargeNum(chargingCount); //构建设备统计数据 List<EquipmentStatsInfo> EquipmentStatsInfos = new ArrayList<>(); Map<Integer, List<TChargingOrder>> collect = chargingOrders.stream().collect(Collectors.groupingBy(TChargingOrder::getChargingPileId)); for (Integer integer : collect.keySet()) { List<TChargingOrder> tChargingOrders = collect.get(integer); BigDecimal reduce1 = tChargingOrders.stream().map(TChargingOrder::getChargingCapacity).reduce(BigDecimal.ZERO, BigDecimal::add); EquipmentStatsInfo equipmentStatsInfo = new EquipmentStatsInfo(); equipmentStatsInfo.setEquipmentClassification(1); long chargingTime = 0L; for (TChargingOrder tChargingOrder : tChargingOrders) { // 累加充电时长 LocalDateTime startTime = tChargingOrder.getStartTime(); LocalDateTime endTime = tChargingOrder.getEndTime(); // 计算时间差 单位分钟 chargingTime += ChronoUnit.SECONDS.between(startTime, endTime)/60; } equipmentStatsInfo.setEquipmentTotalChargeTime(chargingTime); equipmentStatsInfo.setEquipmentTotalChargeNum(tChargingOrders.size()); equipmentStatsInfo.setEquipmentTotalWarningNum(0); equipmentStatsInfo.setEquipmentID(integer.toString()); equipmentStatsInfo.setEquipmentElectricity(reduce1); //构建设备接口统计数据 Map<Integer, List<TChargingOrder>> collect2 = tChargingOrders.stream().collect(Collectors.groupingBy(TChargingOrder::getChargingGunId)); List<ConnectorStatsInfo> ConnectorStatsInfos = new ArrayList<>(); for (Integer integer1 : collect2.keySet()) { List<TChargingOrder> tChargingOrders1 = collect2.get(integer1); BigDecimal reduce2 = tChargingOrders1.stream().map(TChargingOrder::getChargingCapacity).reduce(BigDecimal.ZERO, BigDecimal::add); long chargingTime1 = 0L; for (TChargingOrder chargingOrder : tChargingOrders1) { // 累加充电时长 LocalDateTime startTime = chargingOrder.getStartTime(); LocalDateTime endTime = chargingOrder.getEndTime(); // 计算时间差 单位分钟 chargingTime += ChronoUnit.SECONDS.between(startTime, endTime)/60; } TChargingGun chargingGun = chargingGunClient.getChargingGunById(integer1).getData(); ConnectorStatsInfo connectorStatsInfo = new ConnectorStatsInfo(); connectorStatsInfo.setConnectorID(chargingGun.getFullNumber()); connectorStatsInfo.setConnectorElectricity(reduce2); connectorStatsInfo.setConnectorTotalChargeTime(Integer.valueOf(chargingTime+"")); connectorStatsInfo.setConnectorTotalChargeNum(tChargingOrders1.size()); connectorStatsInfo.setConnectorTotalWarningNum(0); ConnectorStatsInfos.add(connectorStatsInfo); } equipmentStatsInfo.setConnectorStatsInfos(ConnectorStatsInfos); EquipmentStatsInfos.add(equipmentStatsInfo); } stationStatsInfo.setEquipmentStatsInfos(EquipmentStatsInfos); stationStatsInfos.add(stationStatsInfo); } res.setStationStatsInfos(stationStatsInfos); tcecSuperviseUtil.superviseNotificationOperationStatsInfo(res); } @Resource private ChargingPileClient chargingPileClient; @Test public void test4(){ List<Site> data = siteClient.getSiteAll().getData(); List<Integer> siteIds = data.stream().map(Site::getId).collect(Collectors.toList()); List<TChargingPile> tChargingPiles = chargingPileClient.getChargingPileBySiteIds(siteIds).getData(); List<Integer> collect1 = tChargingPiles.stream().map(TChargingPile::getId).collect(Collectors.toList()); List<TChargingGun> chargingGunList = chargingGunClient.getChargingGunByChargingPileIds(collect1).getData(); SupStationPowerInfoResult supStationPowerInfoResult = new SupStationPowerInfoResult(); List<SupStationPowerInfo> stationStatsInfos = new ArrayList<>(); LocalDateTime now = LocalDateTime.of(2025, 2, 3, 23, 30, 0); LocalDateTime startLocalDateTime = LocalDateTime.of(2025, 2, 3, 20, 0, 0); ChargingStatisticeDTO chargingStatisticeDTO = new ChargingStatisticeDTO(); chargingStatisticeDTO.setStartTime(startLocalDateTime); chargingStatisticeDTO.setEndTime(now); List<TChargingOrder> data1 = chargingOrderClient.getChargingStatistics(chargingStatisticeDTO).getData(); for (Site datum : data) { List<TChargingOrder> collect = data1.stream().filter(e -> e.getSiteId().equals(datum.getId()) &&e.getChargingPower()!=null).collect(Collectors.toList()); SupStationPowerInfo supStationPowerInfo = new SupStationPowerInfo(); supStationPowerInfo.setOperatorID("906171535"); supStationPowerInfo.setEquipmentOwnerID("906171535"); supStationPowerInfo.setStationID(datum.getId().toString()); supStationPowerInfo.setStationClassification(1); supStationPowerInfo.setDataTime(DateUtils.localDateTimeToString(LocalDateTime.now())); if (collect.isEmpty()){ supStationPowerInfo.setStationRealTimePower(new BigDecimal("0")); }else{ BigDecimal divide = collect.stream().map(TChargingOrder::getChargingPower).reduce(BigDecimal.ZERO,BigDecimal::add).divide(new BigDecimal(collect.size()),4,BigDecimal.ROUND_DOWN); supStationPowerInfo.setStationRealTimePower(divide); } supStationPowerInfo.setEquipmentPowerInfos(buildEquipmentPowerInfo(datum.getId(), tChargingPiles, chargingGunList)); stationStatsInfos.add(supStationPowerInfo); } supStationPowerInfoResult.setSupStationPowerInfos(stationStatsInfos); tcecSuperviseUtil.superviseNotificationRealtimePowerInfo(supStationPowerInfoResult); } /** * 构建桩数据 * @param tChargingPiles * @return */ public List<SupEquipmentPowerInfo> buildEquipmentPowerInfo(Integer siteId, List<TChargingPile> tChargingPiles, List<TChargingGun> chargingGunList){ List<SupEquipmentPowerInfo> equipmentInfos = new ArrayList<>(); List<TChargingPile> collect = tChargingPiles.stream().filter(s -> s.getSiteId().equals(siteId)).collect(Collectors.toList()); for (TChargingPile tChargingPile : collect) { SupEquipmentPowerInfo equipmentInfo = new SupEquipmentPowerInfo(); equipmentInfo.setEquipmentID(tChargingPile.getId().toString()); equipmentInfo.setEquipmentClassification(1); equipmentInfo.setDataTime(DateUtils.localDateTimeToString(LocalDateTime.now())); equipmentInfo.setEquipRealTimePower(tChargingPile.getRatedPower()); //构建设备接口信息 equipmentInfo.setConnectorPowerInfos(buildConnectorPowerInfos(tChargingPile.getId(), tChargingPile.getCode(), chargingGunList)); equipmentInfos.add(equipmentInfo); } return equipmentInfos; } public List<SupConnectorPowerInfo> buildConnectorPowerInfos(Integer chargingPileId, String code, List<TChargingGun> chargingGunList){ List<SupConnectorPowerInfo> connectorInfos = new ArrayList<>(); List<TChargingGun> collect = chargingGunList.stream().filter(s -> s.getChargingPileId().equals(chargingPileId)).collect(Collectors.toList()); for (TChargingGun chargingGun : collect) { SupConnectorPowerInfo connectorInfo = new SupConnectorPowerInfo(); connectorInfo.setConnectorID(chargingGun.getFullNumber()); connectorInfo.setEquipmentClassification(chargingGun.getEquipmentClassification()); connectorInfo.setDataTime(DateUtils.localDateTimeToString(LocalDateTime.now())); connectorInfo.setConnectorRealTimePower(chargingGun.getChargingPower()); connectorInfos.add(connectorInfo); } return connectorInfos; } private final static String query_token = "/query_token"; private static final String OperatorID = "MA01H3BQ2"; private static final String OperatorSecret = "f1331ef0b37c2d1b"; private static final String SigSecret = "a6fedf0e1b27d6f7"; private static final String DataSecret = "50a61b93919c9604"; private static final String DataSecretIV = "7c8ac6861661d584"; private final static String url = "https://dev-gov-hlht-sc.unievbj.com/evcs/v1.0.0"; @Test public void test5(){ HttpRequest post = HttpUtil.createPost(url + query_token); JSONObject info = new JSONObject(); info.put("OperatorID", "906171535"); info.put("OperatorSecret", OperatorSecret); Long timeStamp = Long.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); post.contentType("application/json;charset=utf-8"); BaseRequestJianGuan baseRequest = new BaseRequestJianGuan(); baseRequest.setOperatorID("906171535"); baseRequest.setTimeStamp(timeStamp+""); baseRequest.setSeq("0001"); String jsonString = JacksonUtils.toJson(info); SequenceGenerator generator = new SequenceGenerator(); String nextSequence = generator.getNextSequence(); String data = AesEncryption.encrypt(DataSecret, DataSecretIV,jsonString); String hmacMD5 = HMacMD5Util.getHMacMD5("906171535",timeStamp+"", data,nextSequence,SigSecret); baseRequest.setData(data); baseRequest.setSig(hmacMD5); String request_json = JacksonUtils.toJson(baseRequest); log.info("获取三方平台授权token请求地址:" + post.getUrl()); log.info("获取三方平台授权token请求参数:" + request_json); log.info("获取三方平台授权token请求Data:" + jsonString); post.body(request_json); HttpResponse execute = post.execute(); if(200 != execute.getStatus()){ log.error("获取三方平台授权token失败:" + execute.body()); } log.info("获取三方平台授权token响应参数:" + execute.body()); BaseResult baseResult = com.alibaba.fastjson.JSON.parseObject(execute.body(), BaseResult.class); Integer Ret = baseResult.getRet(); if(0 != Ret){ log.error("获取三方平台授权token失败:" + baseResult.getMsg()); } //解密参数 String decrypt = AESUtil.decrypt(baseResult.getData(), DataSecret, DataSecretIV); log.info("获取三方平台授权token响应Data:" + decrypt); QueryTokenResult queryTokenResult = JSON.parseObject(decrypt, QueryTokenResult.class); String token = queryTokenResult.getAccessToken(); // Long tokenAvailableTime = LocalDateTime.now().toEpochSecond(ZoneOffset.UTC) + queryTokenResult.getTokenAvailab System.err.println(token); } } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/domain/SysConfig.java
New file @@ -0,0 +1,125 @@ package com.ruoyi.jianguan.domain; import com.ruoyi.common.core.annotation.Excel; import com.ruoyi.common.core.annotation.Excel.ColumnType; import com.ruoyi.common.core.web.domain.BaseModel; import io.swagger.annotations.ApiModelProperty; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import javax.validation.constraints.NotBlank; import javax.validation.constraints.Size; /** * 参数配置表 sys_config * * @author ruoyi */ public class SysConfig extends BaseModel { private static final long serialVersionUID = 1L; /** * 参数主键 */ @Excel(name = "参数主键", cellType = ColumnType.NUMERIC) private Long configId; /** * 参数名称 */ @Excel(name = "参数名称") private String configName; /** * 参数键名 */ @Excel(name = "参数键名") private String configKey; /** * 参数键值 */ @Excel(name = "参数键值") private String configValue; /** * 系统内置(Y是 N否) */ @Excel(name = "系统内置", readConverterExp = "Y=是,N=否") private String configType; public Long getConfigId() { return configId; } public void setConfigId(Long configId) { this.configId = configId; } @NotBlank(message = "参数名称不能为空") @Size(min = 0, max = 100, message = "参数名称不能超过100个字符") public String getConfigName() { return configName; } public void setConfigName(String configName) { this.configName = configName; } @NotBlank(message = "参数键名长度不能为空") @Size(min = 0, max = 100, message = "参数键名长度不能超过100个字符") public String getConfigKey() { return configKey; } public void setConfigKey(String configKey) { this.configKey = configKey; } @NotBlank(message = "参数键值不能为空") @Size(min = 0, max = 500, message = "参数键值长度不能超过500个字符") public String getConfigValue() { return configValue; } public void setConfigValue(String configValue) { this.configValue = configValue; } public String getConfigType() { return configType; } public void setConfigType(String configType) { this.configType = configType; } @ApiModelProperty(value = "备注说明") @Excel(name = "备注说明") private String remark; public String getRemark() { return remark; } public void setRemark(String remark) { this.remark = remark; } @Override public String toString() { return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) .append("configId", getConfigId()) .append("configName", getConfigName()) .append("configKey", getConfigKey()) .append("configValue", getConfigValue()) .append("configType", getConfigType()) .append("createBy", getCreateBy()) .append("createTime", getCreateTime()) .append("updateBy", getUpdateBy()) .append("updateTime", getUpdateTime()) .append("remark", getRemark()) .toString(); } } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/domain/SysMenu.java
New file @@ -0,0 +1,270 @@ package com.ruoyi.jianguan.domain; import com.baomidou.mybatisplus.annotation.TableField; import com.ruoyi.common.core.web.domain.BaseEntity; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; import java.util.ArrayList; import java.util.List; /** * 菜单权限表 sys_menu * * @author ruoyi */ public class SysMenu extends BaseEntity { private static final long serialVersionUID = 1L; /** 菜单ID */ @TableField("menu_id") private Long menuId; /** 菜单名称 */ @TableField("menu_name") private String menuName; /** 父菜单名称 */ @TableField(exist = false) private String parentName; /** 父菜单ID */ @TableField("parent_id") private Long parentId; /** 显示顺序 */ @TableField("order_num") private Integer orderNum; /** 路由地址 */ private String path; /** 组件路径 */ private String component; /** 路由参数 */ private String query; /** 是否为外链(0是 1否) */ @TableField("is_frame") private String isFrame; /** 是否缓存(0缓存 1不缓存) */ @TableField("is_cache") private String isCache; /** 类型(M目录 C菜单 F按钮) */ @TableField("menu_type") private String menuType; /** 显示状态(0显示 1隐藏) */ private String visible; /** 菜单状态(0正常 1停用) */ private String status; /** 权限字符串 */ private String perms; /** 菜单图标 */ private String icon; /** 子菜单 */ @TableField(exist = false) private List<SysMenu> children = new ArrayList<SysMenu>(); public Long getMenuId() { return menuId; } public void setMenuId(Long menuId) { this.menuId = menuId; } @NotBlank(message = "菜单名称不能为空") @Size(min = 0, max = 50, message = "菜单名称长度不能超过50个字符") public String getMenuName() { return menuName; } public void setMenuName(String menuName) { this.menuName = menuName; } public String getParentName() { return parentName; } public void setParentName(String parentName) { this.parentName = parentName; } public Long getParentId() { return parentId; } public void setParentId(Long parentId) { this.parentId = parentId; } @NotNull(message = "显示顺序不能为空") public Integer getOrderNum() { return orderNum; } public void setOrderNum(Integer orderNum) { this.orderNum = orderNum; } @Size(min = 0, max = 200, message = "路由地址不能超过200个字符") public String getPath() { return path; } public void setPath(String path) { this.path = path; } @Size(min = 0, max = 200, message = "组件路径不能超过255个字符") public String getComponent() { return component; } public void setComponent(String component) { this.component = component; } public String getQuery() { return query; } public void setQuery(String query) { this.query = query; } public String getIsFrame() { return isFrame; } public void setIsFrame(String isFrame) { this.isFrame = isFrame; } public String getIsCache() { return isCache; } public void setIsCache(String isCache) { this.isCache = isCache; } @NotBlank(message = "菜单类型不能为空") public String getMenuType() { return menuType; } public void setMenuType(String menuType) { this.menuType = menuType; } public String getVisible() { return visible; } public void setVisible(String visible) { this.visible = visible; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } @Size(min = 0, max = 100, message = "权限标识长度不能超过100个字符") public String getPerms() { return perms; } public void setPerms(String perms) { this.perms = perms; } public String getIcon() { return icon; } public void setIcon(String icon) { this.icon = icon; } public List<SysMenu> getChildren() { return children; } public void setChildren(List<SysMenu> children) { this.children = children; } @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) .append("menuId", getMenuId()) .append("menuName", getMenuName()) .append("parentId", getParentId()) .append("orderNum", getOrderNum()) .append("path", getPath()) .append("component", getComponent()) .append("isFrame", getIsFrame()) .append("IsCache", getIsCache()) .append("menuType", getMenuType()) .append("visible", getVisible()) .append("status ", getStatus()) .append("perms", getPerms()) .append("icon", getIcon()) .append("createBy", getCreateBy()) .append("createTime", getCreateTime()) .append("updateBy", getUpdateBy()) .append("updateTime", getUpdateTime()) .append("remark", getRemark()) .toString(); } } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/domain/SysMenus.java
New file @@ -0,0 +1,103 @@ package com.ruoyi.jianguan.domain; import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.core.web.domain.BaseEntity; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * 菜单权限表 sys_menu * * @author ruoyi */ @Data public class SysMenus extends BaseEntity { private static final long serialVersionUID = 1L; /** 菜单ID */ @TableField("menu_id") private Long menuId; /** 菜单名称 */ @TableField("menu_name") private String menuName; /** 父菜单名称 */ @TableField(exist = false) private String parentName; /** 父菜单ID */ @TableField("parent_id") private Long parentId; /** 显示顺序 */ @TableField("order_num") private Integer orderNum; /** 路由地址 */ private String path; /** 组件路径 */ private String component; /** 路由参数 */ private String query; /** 是否为外链(0是 1否) */ @TableField("is_frame") private String isFrame; /** 是否缓存(0缓存 1不缓存) */ @TableField("is_cache") private String isCache; /** 类型(M目录 C菜单 F按钮) */ @TableField("menu_type") private String menuType; /** 显示状态(0显示 1隐藏) */ private String visible; /** 菜单状态(0正常 1停用) */ private Boolean status=false; /** 权限字符串 */ private String perms; /** 菜单图标 */ private String icon; @TableField("create_by") private String createBy; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @TableField("create_time") private Date createTime; /** 更新者 */ @ApiModelProperty(value = "记录修改人,前端忽略") //@JsonIgnore @TableField("update_by") private String updateBy; /** 更新时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @TableField("update_time") private Date updateTime; /** 备注 */ private String remark; /** 子菜单 */ @TableField(exist = false) private List<SysMenus> children = new ArrayList<SysMenus>(); @ApiModelProperty("1 拥有 2未拥有") private Integer isHave; } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/domain/SysNotice.java
New file @@ -0,0 +1,116 @@ package com.ruoyi.jianguan.domain; import com.ruoyi.common.core.annotation.Excel; import com.ruoyi.common.core.web.domain.BaseModel; import com.ruoyi.common.core.xss.Xss; import io.swagger.annotations.ApiModelProperty; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import javax.validation.constraints.NotBlank; import javax.validation.constraints.Size; /** * 通知公告表 sys_notice * * @author ruoyi */ public class SysNotice extends BaseModel { private static final long serialVersionUID = 1L; /** 公告ID */ private Long noticeId; /** 公告标题 */ private String noticeTitle; /** 公告类型(1通知 2公告) */ private String noticeType; /** 公告内容 */ private String noticeContent; /** 公告状态(0正常 1关闭) */ private String status; public Long getNoticeId() { return noticeId; } public void setNoticeId(Long noticeId) { this.noticeId = noticeId; } public void setNoticeTitle(String noticeTitle) { this.noticeTitle = noticeTitle; } @Xss(message = "公告标题不能包含脚本字符") @NotBlank(message = "公告标题不能为空") @Size(min = 0, max = 50, message = "公告标题不能超过50个字符") public String getNoticeTitle() { return noticeTitle; } public void setNoticeType(String noticeType) { this.noticeType = noticeType; } public String getNoticeType() { return noticeType; } public void setNoticeContent(String noticeContent) { this.noticeContent = noticeContent; } public String getNoticeContent() { return noticeContent; } public void setStatus(String status) { this.status = status; } public String getStatus() { return status; } @ApiModelProperty(value = "备注说明") @Excel(name = "备注说明") private String remark; public String getRemark() { return remark; } public void setRemark(String remark) { this.remark = remark; } @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) .append("noticeId", getNoticeId()) .append("noticeTitle", getNoticeTitle()) .append("noticeType", getNoticeType()) .append("noticeContent", getNoticeContent()) .append("status", getStatus()) .append("createBy", getCreateBy()) .append("createTime", getCreateTime()) .append("updateBy", getUpdateBy()) .append("updateTime", getUpdateTime()) .append("remark", getRemark()) .toString(); } } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/domain/SysPost.java
New file @@ -0,0 +1,137 @@ package com.ruoyi.jianguan.domain; import com.ruoyi.common.core.annotation.Excel; import com.ruoyi.common.core.annotation.Excel.ColumnType; import com.ruoyi.common.core.web.domain.BaseModel; import io.swagger.annotations.ApiModelProperty; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; /** * 岗位表 sys_post * * @author ruoyi */ public class SysPost extends BaseModel { private static final long serialVersionUID = 1L; /** 岗位序号 */ @Excel(name = "岗位序号", cellType = ColumnType.NUMERIC) private Long postId; /** 岗位编码 */ @Excel(name = "岗位编码") private String postCode; /** 岗位名称 */ @Excel(name = "岗位名称") private String postName; /** 岗位排序 */ @Excel(name = "岗位排序") private Integer postSort; /** 状态(0正常 1停用) */ @Excel(name = "状态", readConverterExp = "0=正常,1=停用") private String status; /** 用户是否存在此岗位标识 默认不存在 */ private boolean flag = false; public Long getPostId() { return postId; } public void setPostId(Long postId) { this.postId = postId; } @NotBlank(message = "岗位编码不能为空") @Size(min = 0, max = 64, message = "岗位编码长度不能超过64个字符") public String getPostCode() { return postCode; } public void setPostCode(String postCode) { this.postCode = postCode; } @NotBlank(message = "岗位名称不能为空") @Size(min = 0, max = 50, message = "岗位名称长度不能超过50个字符") public String getPostName() { return postName; } public void setPostName(String postName) { this.postName = postName; } @NotNull(message = "显示顺序不能为空") public Integer getPostSort() { return postSort; } public void setPostSort(Integer postSort) { this.postSort = postSort; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } public boolean isFlag() { return flag; } public void setFlag(boolean flag) { this.flag = flag; } @ApiModelProperty(value = "备注说明") @Excel(name = "备注说明") private String remark; public String getRemark() { return remark; } public void setRemark(String remark) { this.remark = remark; } @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) .append("postId", getPostId()) .append("postCode", getPostCode()) .append("postName", getPostName()) .append("postSort", getPostSort()) .append("status", getStatus()) .append("createBy", getCreateBy()) .append("createTime", getCreateTime()) .append("updateBy", getUpdateBy()) .append("updateTime", getUpdateTime()) .append("remark", getRemark()) .toString(); } } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/domain/SysRoleDept.java
New file @@ -0,0 +1,46 @@ package com.ruoyi.jianguan.domain; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; /** * 角色和部门关联 sys_role_dept * * @author ruoyi */ public class SysRoleDept { /** 角色ID */ private Long roleId; /** 部门ID */ private Long deptId; public Long getRoleId() { return roleId; } public void setRoleId(Long roleId) { this.roleId = roleId; } public Long getDeptId() { return deptId; } public void setDeptId(Long deptId) { this.deptId = deptId; } @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) .append("roleId", getRoleId()) .append("deptId", getDeptId()) .toString(); } } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/domain/SysRoleMenu.java
New file @@ -0,0 +1,49 @@ package com.ruoyi.jianguan.domain; import com.baomidou.mybatisplus.annotation.TableField; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; /** * 角色和菜单关联 sys_role_menu * * @author ruoyi */ public class SysRoleMenu { /** 角色ID */ @TableField("role_id") private Long roleId; /** 菜单ID */ @TableField("menu_id") private Long menuId; public Long getRoleId() { return roleId; } public void setRoleId(Long roleId) { this.roleId = roleId; } public Long getMenuId() { return menuId; } public void setMenuId(Long menuId) { this.menuId = menuId; } @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) .append("roleId", getRoleId()) .append("menuId", getMenuId()) .toString(); } } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/domain/SysUserOnline.java
New file @@ -0,0 +1,100 @@ package com.ruoyi.jianguan.domain; /** * 当前在线会话 * * @author ruoyi */ public class SysUserOnline { /** 会话编号 */ private String tokenId; /** 用户名称 */ private String userName; /** 登录IP地址 */ private String ipaddr; /** 登录地址 */ private String loginLocation; /** 浏览器类型 */ private String browser; /** 操作系统 */ private String os; /** 登录时间 */ private Long loginTime; public String getTokenId() { return tokenId; } public void setTokenId(String tokenId) { this.tokenId = tokenId; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getIpaddr() { return ipaddr; } public void setIpaddr(String ipaddr) { this.ipaddr = ipaddr; } public String getLoginLocation() { return loginLocation; } public void setLoginLocation(String loginLocation) { this.loginLocation = loginLocation; } public String getBrowser() { return browser; } public void setBrowser(String browser) { this.browser = browser; } public String getOs() { return os; } public void setOs(String os) { this.os = os; } public Long getLoginTime() { return loginTime; } public void setLoginTime(Long loginTime) { this.loginTime = loginTime; } } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/domain/SysUserPost.java
New file @@ -0,0 +1,46 @@ package com.ruoyi.jianguan.domain; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; /** * 用户和岗位关联 sys_user_post * * @author ruoyi */ public class SysUserPost { /** 用户ID */ private Long userId; /** 岗位ID */ private Long postId; public Long getUserId() { return userId; } public void setUserId(Long userId) { this.userId = userId; } public Long getPostId() { return postId; } public void setPostId(Long postId) { this.postId = postId; } @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) .append("userId", getUserId()) .append("postId", getPostId()) .toString(); } } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/domain/SysUserRole.java
New file @@ -0,0 +1,49 @@ package com.ruoyi.jianguan.domain; import com.baomidou.mybatisplus.annotation.TableField; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; /** * 用户和角色关联 sys_user_role * * @author ruoyi */ public class SysUserRole { /** 用户ID */ @TableField("user_id") private Long userId; /** 角色ID */ @TableField("role_id") private Long roleId; public Long getUserId() { return userId; } public void setUserId(Long userId) { this.userId = userId; } public Long getRoleId() { return roleId; } public void setRoleId(Long roleId) { this.roleId = roleId; } @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) .append("userId", getUserId()) .append("roleId", getRoleId()) .toString(); } } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/AccountingStrategyDetailOrderMapper.java
New file @@ -0,0 +1,11 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.order.api.model.AccountingStrategyDetailOrder; /** * @author zhibing.pu * @Date 2024/9/4 15:42 */ public interface AccountingStrategyDetailOrderMapper extends BaseMapper<AccountingStrategyDetailOrder> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/AccountingStrategyOrderMapper.java
New file @@ -0,0 +1,11 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.order.api.model.AccountingStrategyOrder; /** * @author zhibing.pu * @Date 2024/9/4 15:37 */ public interface AccountingStrategyOrderMapper extends BaseMapper<AccountingStrategyOrder> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/GenTableColumnMapper.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.other.api.domain.GenTableColumn; /** * <p> * Mapper 接口 * </p> * * @author 无关风月 * @since 2024-08-06 */ public interface GenTableColumnMapper extends BaseMapper<GenTableColumn> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/GenTableMapper.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.other.api.domain.GenTable; /** * <p> * Mapper 接口 * </p> * * @author 无关风月 * @since 2024-08-06 */ public interface GenTableMapper extends BaseMapper<GenTable> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/OperatorMapper.java
New file @@ -0,0 +1,11 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.other.api.domain.Operator; /** * @author zhibing.pu * @Date 2025/1/22 15:08 */ public interface OperatorMapper extends BaseMapper<Operator> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/PartnerMapper.java
New file @@ -0,0 +1,18 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.chargingPile.api.dto.PartnerListDTO; import com.ruoyi.chargingPile.api.model.Partner; import com.ruoyi.chargingPile.api.query.GetPartnerList; import com.ruoyi.common.core.web.page.PageInfo; import org.apache.ibatis.annotations.Param; import java.util.List; /** * @author zhibing.pu * @Date 2024/8/7 13:44 */ public interface PartnerMapper extends BaseMapper<Partner> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/RegionMapper.java
New file @@ -0,0 +1,11 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.other.api.domain.Region; /** * @author zhibing.pu * @Date 2024/8/8 11:59 */ public interface RegionMapper extends BaseMapper<Region> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/SiteMapper.java
New file @@ -0,0 +1,27 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.chargingPile.api.dto.GetSiteListDTO; import com.ruoyi.chargingPile.api.model.Site; import com.ruoyi.chargingPile.api.query.GetSiteList; import com.ruoyi.chargingPile.api.query.SiteDetailQuery; import com.ruoyi.chargingPile.api.query.SiteQuery; 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; import java.util.Set; /** * @author zhibing.pu * @Date 2024/8/7 19:49 */ @Mapper public interface SiteMapper extends BaseMapper<Site> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/SysConfigMapper.java
New file @@ -0,0 +1,17 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.jianguan.domain.SysConfig; import org.apache.ibatis.annotations.Mapper; import java.util.List; /** * 参数配置 数据层 * * @author ruoyi */ @Mapper public interface SysConfigMapper extends BaseMapper<SysConfig> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/SysDeptMapper.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.mapper; import com.ruoyi.system.api.domain.SysDept; import org.apache.ibatis.annotations.Param; import java.util.List; /** * 部门管理 数据层 * * @author ruoyi */ public interface SysDeptMapper { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/SysDictDataMapper.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.mapper; import com.ruoyi.system.api.domain.SysDictData; import org.apache.ibatis.annotations.Param; import java.util.List; /** * 字典表 数据层 * * @author ruoyi */ public interface SysDictDataMapper { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/SysDictTypeMapper.java
New file @@ -0,0 +1,15 @@ package com.ruoyi.jianguan.mapper; import com.ruoyi.system.api.domain.SysDictType; import java.util.List; /** * 字典表 数据层 * * @author ruoyi */ public interface SysDictTypeMapper { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/SysLoginLogMapper.java
New file @@ -0,0 +1,17 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.system.api.domain.SysLoginLog; import org.apache.ibatis.annotations.Param; import java.util.List; /** * @author zhibing.pu * @Date 2024/8/12 15:44 */ public interface SysLoginLogMapper extends BaseMapper<SysLoginLog> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/SysMenuMapper.java
New file @@ -0,0 +1,21 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.jianguan.domain.SysMenu; import com.ruoyi.jianguan.domain.SysMenus; import org.apache.ibatis.annotations.Param; import java.util.List; /** * 菜单表 数据层 * * @author ruoyi */ public interface SysMenuMapper extends BaseMapper<SysMenu> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/SysNoticeMapper.java
New file @@ -0,0 +1,13 @@ package com.ruoyi.jianguan.mapper; import java.util.List; /** * 通知公告表 数据层 * * @author ruoyi */ public interface SysNoticeMapper { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/SysOperLogMapper.java
New file @@ -0,0 +1,15 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.system.api.domain.SysOperLog; import java.util.List; /** * 操作日志 数据层 * * @author ruoyi */ public interface SysOperLogMapper extends BaseMapper<SysOperLog> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/SysPostMapper.java
New file @@ -0,0 +1,14 @@ package com.ruoyi.jianguan.mapper; import java.util.List; /** * 岗位信息 数据层 * * @author ruoyi */ public interface SysPostMapper { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/SysRoleDeptMapper.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.mapper; import com.ruoyi.jianguan.domain.SysRoleDept; import java.util.List; /** * 角色与部门关联表 数据层 * * @author ruoyi */ public interface SysRoleDeptMapper { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/SysRoleMapper.java
New file @@ -0,0 +1,17 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.system.api.domain.SysRole; import org.apache.ibatis.annotations.Param; import java.util.List; /** * 角色表 数据层 * * @author ruoyi */ public interface SysRoleMapper extends BaseMapper<SysRole> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/SysRoleMenuMapper.java
New file @@ -0,0 +1,46 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.jianguan.domain.SysRoleMenu; import java.util.List; /** * 角色与菜单关联表 数据层 * * @author ruoyi */ public interface SysRoleMenuMapper extends BaseMapper<SysRoleMenu> { /** * 查询菜单使用数量 * * @param menuId 菜单ID * @return 结果 */ public int checkMenuExistRole(Long menuId); /** * 通过角色ID删除角色和菜单关联 * * @param roleId 角色ID * @return 结果 */ public int deleteRoleMenuByRoleId(Long roleId); /** * 批量删除角色菜单关联信息 * * @param ids 需要删除的数据ID * @return 结果 */ public int deleteRoleMenu(Long[] ids); /** * 批量新增角色菜单信息 * * @param roleMenuList 角色菜单列表 * @return 结果 */ public int batchRoleMenu(List<SysRoleMenu> roleMenuList); } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/SysUserMapper.java
New file @@ -0,0 +1,20 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.query.ChangeUserQuery; import org.apache.ibatis.annotations.Param; import java.util.ArrayList; import java.util.List; /** * 用户表 数据层 * * @author ruoyi */ public interface SysUserMapper extends BaseMapper<SysUser> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/SysUserPostMapper.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.mapper; import com.ruoyi.jianguan.domain.SysUserPost; import java.util.List; /** * 用户与岗位关联表 数据层 * * @author ruoyi */ public interface SysUserPostMapper { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/SysUserRoleMapper.java
New file @@ -0,0 +1,18 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.jianguan.domain.SysUserRole; import org.apache.ibatis.annotations.Param; import java.util.List; /** * 用户与角色关联表 数据层 * * @author ruoyi */ public interface SysUserRoleMapper extends BaseMapper<SysUserRole> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TAccountingStrategyDetailMapper.java
New file @@ -0,0 +1,24 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.chargingPile.api.model.TAccountingStrategyDetail; import com.ruoyi.chargingPile.api.vo.TAccountingStrategyDetailVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; /** * <p> * 计费策略明细 Mapper 接口 * </p> * * @author xiaochen * @since 2024-08-06 */ @Mapper public interface TAccountingStrategyDetailMapper extends BaseMapper<TAccountingStrategyDetail> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TAccountingStrategyMapper.java
New file @@ -0,0 +1,25 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.chargingPile.api.model.TAccountingStrategy; import com.ruoyi.chargingPile.api.query.TAccountingStrategyQuery; import com.ruoyi.chargingPile.api.vo.TAccountingStrategyVO; import com.ruoyi.common.core.web.page.PageInfo; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; /** * <p> * 计费策略 Mapper 接口 * </p> * * @author xiaochen * @since 2024-08-06 */ @Mapper public interface TAccountingStrategyMapper extends BaseMapper<TAccountingStrategy> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TActivityMapper.java
New file @@ -0,0 +1,21 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.other.api.domain.TActivity; import com.ruoyi.other.api.dto.AdvertisingDTO; import org.apache.ibatis.annotations.Param; import java.util.List; /** * <p> * Mapper 接口 * </p> * * @author 无关风月 * @since 2024-08-06 */ public interface TActivityMapper extends BaseMapper<TActivity> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TAdvertisingMapper.java
New file @@ -0,0 +1,21 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.other.api.domain.TAdvertising; import com.ruoyi.other.api.dto.AdvertisingDTO; import org.apache.ibatis.annotations.Param; import java.util.List; /** * <p> * Mapper 接口 * </p> * * @author 无关风月 * @since 2024-08-06 */ public interface TAdvertisingMapper extends BaseMapper<TAdvertising> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TAppCouponMapper.java
New file @@ -0,0 +1,25 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.account.api.model.TAppCoupon; import com.ruoyi.account.api.query.ExchangeRecordGoodsQuery; import com.ruoyi.account.api.vo.ExchangeRecordVO; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.other.api.vo.CouponListVOVO; import org.apache.ibatis.annotations.Param; import java.util.List; /** * <p> * Mapper 接口 * </p> * * @author luodangjia * @since 2024-08-06 */ public interface TAppCouponMapper extends BaseMapper<TAppCoupon> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TAppUserAddressMapper.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.account.api.model.TAppUserAddress; /** * <p> * Mapper 接口 * </p> * * @author luodangjia * @since 2024-08-06 */ public interface TAppUserAddressMapper extends BaseMapper<TAppUserAddress> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TAppUserCarMapper.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.account.api.model.TAppUserCar; /** * <p> * Mapper 接口 * </p> * * @author luodangjia * @since 2024-08-06 */ public interface TAppUserCarMapper extends BaseMapper<TAppUserCar> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TAppUserIntegralChangeMapper.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.account.api.model.TAppUserIntegralChange; /** * <p> * Mapper 接口 * </p> * * @author luodangjia * @since 2024-08-06 */ public interface TAppUserIntegralChangeMapper extends BaseMapper<TAppUserIntegralChange> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TAppUserMapper.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.account.api.model.TAppUser; /** * <p> * Mapper 接口 * </p> * * @author luodangjia * @since 2024-08-06 */ public interface TAppUserMapper extends BaseMapper<TAppUser> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TAppUserSignMapper.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.account.api.model.TAppUserSign; /** * <p> * Mapper 接口 * </p> * * @author luodangjia * @since 2024-08-06 */ public interface TAppUserSignMapper extends BaseMapper<TAppUserSign> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TAppUserTagMapper.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.account.api.model.TAppUserTag; /** * <p> * Mapper 接口 * </p> * * @author luodangjia * @since 2024-08-06 */ public interface TAppUserTagMapper extends BaseMapper<TAppUserTag> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TAppUserVipDetailMapper.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.account.api.model.TAppUserVipDetail; /** * <p> * Mapper 接口 * </p> * * @author luodangjia * @since 2024-08-08 */ public interface TAppUserVipDetailMapper extends BaseMapper<TAppUserVipDetail> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TApplyChargingPileMapper.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.chargingPile.api.model.TApplyChargingPile; /** * <p> * Mapper 接口 * </p> * * @author xiaochen * @since 2024-08-07 */ public interface TApplyChargingPileMapper extends BaseMapper<TApplyChargingPile> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TCarportMapper.java
New file @@ -0,0 +1,27 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.chargingPile.api.model.TCarport; import com.ruoyi.chargingPile.api.vo.TCarportVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; /** * <p> * 车库 Mapper 接口 * </p> * * @author xiaochen * @since 2024-08-06 */ @Mapper public interface TCarportMapper extends BaseMapper<TCarport> { /** * 通过停车场id查询车库及车道信息 * @param parkingLotId * @return */ } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TChargingBillMapper.java
New file @@ -0,0 +1,25 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.order.api.model.TChargingBill; import com.ruoyi.order.api.vo.ChargingBillListVO; import com.ruoyi.order.api.model.ChargingListQuery; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; /** * <p> * Mapper 接口 * </p> * * @author xiaochen * @since 2024-08-07 */ @Mapper public interface TChargingBillMapper extends BaseMapper<TChargingBill> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TChargingGunMapper.java
New file @@ -0,0 +1,28 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.chargingPile.api.model.TChargingGun; import com.ruoyi.chargingPile.api.query.TChargingGunQuery; import com.ruoyi.chargingPile.api.vo.StatusModeStatisticsVO; import com.ruoyi.chargingPile.api.vo.TChargingGunVO; import com.ruoyi.common.core.web.page.PageInfo; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; import java.util.Map; import java.util.Set; /** * <p> * 充电枪 Mapper 接口 * </p> * * @author xiaochen * @since 2024-08-06 */ @Mapper public interface TChargingGunMapper extends BaseMapper<TChargingGun> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TChargingOrderAccountingStrategyMapper.java
New file @@ -0,0 +1,18 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.order.api.model.TChargingOrderAccountingStrategy; import org.apache.ibatis.annotations.Mapper; /** * <p> * Mapper 接口 * </p> * * @author xiaochen * @since 2024-08-07 */ @Mapper public interface TChargingOrderAccountingStrategyMapper extends BaseMapper<TChargingOrderAccountingStrategy> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TChargingOrderMapper.java
New file @@ -0,0 +1,34 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.common.core.dto.ChargingOrderGroup; import com.ruoyi.common.core.dto.ChargingPercentProvinceDto; import com.ruoyi.common.core.web.page.PageInfo; 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.query.ChargingOrderQuery; import com.ruoyi.order.api.vo.ChargingOrderListVO; import com.ruoyi.order.api.vo.ChargingOrderVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.List; import java.util.Map; /** * <p> * Mapper 接口 * </p> * * @author xiaochen * @since 2024-08-07 */ @Mapper public interface TChargingOrderMapper extends BaseMapper<TChargingOrder> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TChargingOrderRefundMapper.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.order.api.model.TChargingOrderRefund; /** * <p> * Mapper 接口 * </p> * * @author xiaochen * @since 2024-08-26 */ public interface TChargingOrderRefundMapper extends BaseMapper<TChargingOrderRefund> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TChargingPileMapper.java
New file @@ -0,0 +1,28 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.chargingPile.api.dto.PageChargingPileListDTO; import com.ruoyi.chargingPile.api.model.TChargingPile; import com.ruoyi.chargingPile.api.query.PageChargingPileList; import com.ruoyi.chargingPile.api.vo.TChargingPileVO; import com.ruoyi.common.core.web.page.PageInfo; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; import java.util.Set; /** * <p> * 充电桩 Mapper 接口 * </p> * * @author xiaochen * @since 2024-08-06 */ @Mapper public interface TChargingPileMapper extends BaseMapper<TChargingPile> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TChargingPileNotificationMapper.java
New file @@ -0,0 +1,24 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.chargingPile.api.model.TChargingPileNotification; import com.ruoyi.common.core.web.page.PageInfo; import org.apache.ibatis.annotations.Param; import java.util.List; import java.util.Set; /** * <p> * Mapper 接口 * </p> * * @author xiaochen * @since 2024-08-08 */ public interface TChargingPileNotificationMapper extends BaseMapper<TChargingPileNotification> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TCompanyMapper.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.other.api.domain.TCompany; /** * <p> * Mapper 接口 * </p> * * @author 无关风月 * @since 2024-08-06 */ public interface TCompanyMapper extends BaseMapper<TCompany> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TCouponMapper.java
New file @@ -0,0 +1,20 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.other.api.domain.TCoupon; import org.apache.ibatis.annotations.Param; import java.util.List; /** * <p> * Mapper 接口 * </p> * * @author 无关风月 * @since 2024-08-06 */ public interface TCouponMapper extends BaseMapper<TCoupon> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TEnterpriseUserApplicationMapper.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.other.api.domain.TEnterpriseUserApplication; /** * <p> * Mapper 接口 * </p> * * @author 无关风月 * @since 2024-08-06 */ public interface TEnterpriseUserApplicationMapper extends BaseMapper<TEnterpriseUserApplication> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TEvaluationTagMapper.java
New file @@ -0,0 +1,23 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.other.api.domain.TEvaluationTag; import com.ruoyi.other.api.vo.TEvaluationTagVO; import org.apache.ibatis.annotations.Param; import java.util.List; /** * <p> * Mapper 接口 * </p> * * @author 无关风月 * @since 2024-08-06 */ public interface TEvaluationTagMapper extends BaseMapper<TEvaluationTag> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TExchangeOrderMapper.java
New file @@ -0,0 +1,25 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.order.api.model.TExchangeOrder; import com.ruoyi.order.api.query.ShoppingOrderQuery; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; /** * <p> * Mapper 接口 * </p> * * @author xiaochen * @since 2024-08-07 */ @Mapper public interface TExchangeOrderMapper extends BaseMapper<TExchangeOrder> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TFaultMessageMapper.java
New file @@ -0,0 +1,25 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.chargingPile.api.model.TFaultMessage; import com.ruoyi.common.core.web.page.PageInfo; import org.apache.ibatis.annotations.Param; import java.util.List; /** * <p> * Mapper 接口 * </p> * * @author xiaochen * @since 2024-08-08 */ public interface TFaultMessageMapper extends BaseMapper<TFaultMessage> { /** * 获取故障信息列表 * @param pageInfo * @return */ } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TGoodsMapper.java
New file @@ -0,0 +1,23 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.common.core.dto.AppGoodQuery; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.other.api.domain.TGoods; import com.ruoyi.other.api.dto.GoodsDTO; import org.apache.ibatis.annotations.Param; import java.util.List; /** * <p> * Mapper 接口 * </p> * * @author 无关风月 * @since 2024-08-06 */ public interface TGoodsMapper extends BaseMapper<TGoods> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TGrantVipMapper.java
New file @@ -0,0 +1,18 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.order.api.model.TGrantVip; import org.apache.ibatis.annotations.Mapper; /** * <p> * Mapper 接口 * </p> * * @author xiaochen * @since 2024-08-07 */ @Mapper public interface TGrantVipMapper extends BaseMapper<TGrantVip> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/THtmlMapper.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.other.api.domain.THtml; /** * <p> * Mapper 接口 * </p> * * @author 无关风月 * @since 2024-08-06 */ public interface THtmlMapper extends BaseMapper<THtml> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TIntegralRuleMapper.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.other.api.domain.TIntegralRule; /** * <p> * Mapper 接口 * </p> * * @author 无关风月 * @since 2024-08-06 */ public interface TIntegralRuleMapper extends BaseMapper<TIntegralRule> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TInviteUserMapper.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.account.api.model.TInviteUser; /** * <p> * Mapper 接口 * </p> * * @author luodangjia * @since 2024-08-06 */ public interface TInviteUserMapper extends BaseMapper<TInviteUser> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TInvoiceInformationMapper.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.account.api.model.TInvoiceInformation; /** * <p> * Mapper 接口 * </p> * * @author luodangjia * @since 2024-08-06 */ public interface TInvoiceInformationMapper extends BaseMapper<TInvoiceInformation> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TInvoiceTypeMapper.java
New file @@ -0,0 +1,21 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.other.api.domain.TInvoiceType; import org.apache.ibatis.annotations.Param; import java.util.List; /** * <p> * Mapper 接口 * </p> * * @author 无关风月 * @since 2024-08-06 */ public interface TInvoiceTypeMapper extends BaseMapper<TInvoiceType> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TMonitoringEquipmentMapper.java
New file @@ -0,0 +1,30 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.chargingPile.api.model.TMonitoringEquipment; import com.ruoyi.chargingPile.api.query.TMonitoringEquipmentQuery; import com.ruoyi.chargingPile.api.vo.TMonitoringEquipmentVO; import com.ruoyi.common.core.web.page.PageInfo; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; /** * <p> * 监控 Mapper 接口 * </p> * * @author xiaochen * @since 2024-08-06 */ @Mapper public interface TMonitoringEquipmentMapper extends BaseMapper<TMonitoringEquipment> { /** * 查询监控分页列表 * @param query * @param pageInfo * @return */ } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TNoticeMapper.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.other.api.domain.TNotice; /** * <p> * Mapper 接口 * </p> * * @author 无关风月 * @since 2024-08-06 */ public interface TNoticeMapper extends BaseMapper<TNotice> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TOrderAppealMapper.java
New file @@ -0,0 +1,28 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.order.api.model.TOrderAppeal; import com.ruoyi.order.api.query.TOrderAppealQuery; import com.ruoyi.order.api.vo.TOrderAppealVO; import org.apache.ibatis.annotations.Param; import java.util.List; /** * <p> * Mapper 接口 * </p> * * @author xiaochen * @since 2024-08-07 */ public interface TOrderAppealMapper extends BaseMapper<TOrderAppeal> { /** * 查询订单申诉分页列表 * @param query * @param pageInfo * @return */ } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TOrderEvaluateMapper.java
New file @@ -0,0 +1,25 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.order.api.model.TOrderEvaluate; import com.ruoyi.order.api.query.TOrderEvaluateQuery; import com.ruoyi.order.api.vo.TOrderEvaluateVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; import java.util.Map; /** * <p> * Mapper 接口 * </p> * * @author xiaochen * @since 2024-08-07 */ @Mapper public interface TOrderEvaluateMapper extends BaseMapper<TOrderEvaluate> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TOrderEvaluateTagMapper.java
New file @@ -0,0 +1,27 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.order.api.model.TOrderEvaluateTag; import com.ruoyi.other.api.vo.TEvaluationTagVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; /** * <p> * Mapper 接口 * </p> * * @author xiaochen * @since 2024-08-07 */ @Mapper public interface TOrderEvaluateTagMapper extends BaseMapper<TOrderEvaluateTag> { /** * 获取标签评价数量 * @param tagIds * @return */ } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TOrderInvoiceDetailMapper.java
New file @@ -0,0 +1,18 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.order.api.model.TOrderInvoiceDetail; import org.apache.ibatis.annotations.Mapper; /** * <p> * Mapper 接口 * </p> * * @author xiaochen * @since 2024-08-07 */ @Mapper public interface TOrderInvoiceDetailMapper extends BaseMapper<TOrderInvoiceDetail> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TOrderInvoiceMapper.java
New file @@ -0,0 +1,27 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.order.api.model.TOrderInvoice; import com.ruoyi.order.api.query.TOrderInvoiceQuery; import com.ruoyi.order.api.vo.TOrderInvoiceVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; import java.util.Map; /** * <p> * Mapper 接口 * </p> * * @author xiaochen * @since 2024-08-07 */ @Mapper public interface TOrderInvoiceMapper extends BaseMapper<TOrderInvoice> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TParkingLotMapper.java
New file @@ -0,0 +1,27 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.chargingPile.api.model.TParkingLot; import com.ruoyi.chargingPile.api.query.TParkingLotQuery; import com.ruoyi.chargingPile.api.vo.TParkingLotVO; import com.ruoyi.common.core.web.page.PageInfo; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; import java.util.Set; /** * <p> * 停车场 Mapper 接口 * </p> * * @author xiaochen * @since 2024-08-06 */ @Mapper public interface TParkingLotMapper extends BaseMapper<TParkingLot> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TParkingRecordMapper.java
New file @@ -0,0 +1,26 @@ package com.ruoyi.jianguan.mapper; 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.util.List; import java.util.Map; /** * <p> * Mapper 接口 * </p> * * @author xiaochen * @since 2024-08-08 */ public interface TParkingRecordMapper extends BaseMapper<TParkingRecord> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TPartnerSiteMapper.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.chargingPile.api.model.TPartnerSite; /** * <p> * Mapper 接口 * </p> * * @author xiaochen * @since 2024-08-08 */ public interface TPartnerSiteMapper extends BaseMapper<TPartnerSite> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TRepairMapper.java
New file @@ -0,0 +1,23 @@ package com.ruoyi.jianguan.mapper; 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; /** * <p> * Mapper 接口 * </p> * * @author xiaochen * @since 2024-08-08 */ public interface TRepairMapper extends BaseMapper<TRepair> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TRoleSiteMapper.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.other.api.domain.TRoleSite; /** * <p> * Mapper 接口 * </p> * * @author 无关风月 * @since 2024-08-06 */ public interface TRoleSiteMapper extends BaseMapper<TRoleSite> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TSettlementConfirmMapper.java
New file @@ -0,0 +1,24 @@ package com.ruoyi.jianguan.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.query.SettlementListQuery; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; /** * <p> * Mapper 接口 * </p> * * @author xiaochen * @since 2024-08-07 */ @Mapper public interface TSettlementConfirmMapper extends BaseMapper<TSettlementConfirm> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TShoppingOrderMapper.java
New file @@ -0,0 +1,29 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.order.api.model.TShoppingOrder; import com.ruoyi.order.api.query.ShoppingOrderQuery; import com.ruoyi.order.api.query.TActivityStatisticsQuery; import com.ruoyi.order.api.vo.TActivityStatisticslVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.math.BigDecimal; import java.time.LocalDate; import java.util.List; import java.util.Map; /** * <p> * Mapper 接口 * </p> * * @author xiaochen * @since 2024-08-07 */ @Mapper public interface TShoppingOrderMapper extends BaseMapper<TShoppingOrder> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TShoppingOrderRefundMapper.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.order.api.model.TShoppingOrderRefund; /** * <p> * Mapper 接口 * </p> * * @author xiaochen * @since 2024-08-26 */ public interface TShoppingOrderRefundMapper extends BaseMapper<TShoppingOrderRefund> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TSiteMenuMapper.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.chargingPile.api.model.TSiteMenu; /** * <p> * Mapper 接口 * </p> * * @author xiaochen * @since 2024-08-08 */ public interface TSiteMenuMapper extends BaseMapper<TSiteMenu> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TSystemConfigurationMapper.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.other.api.domain.TSystemConfiguration; /** * <p> * Mapper 接口 * </p> * * @author 无关风月 * @since 2024-08-06 */ public interface TSystemConfigurationMapper extends BaseMapper<TSystemConfiguration> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TUserSiteMapper.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.other.api.domain.TUserSite; /** * <p> * Mapper 接口 * </p> * * @author 无关风月 * @since 2024-08-06 */ public interface TUserSiteMapper extends BaseMapper<TUserSite> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TUserTagMapper.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.other.api.domain.TUserTag; /** * <p> * Mapper 接口 * </p> * * @author 无关风月 * @since 2024-08-06 */ public interface TUserTagMapper extends BaseMapper<TUserTag> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TVehicleRampMapper.java
New file @@ -0,0 +1,18 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.chargingPile.api.model.TVehicleRamp; import org.apache.ibatis.annotations.Mapper; /** * <p> * 车道 Mapper 接口 * </p> * * @author xiaochen * @since 2024-08-06 */ @Mapper public interface TVehicleRampMapper extends BaseMapper<TVehicleRamp> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TVipMapper.java
New file @@ -0,0 +1,22 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.other.api.domain.TVip; import org.apache.ibatis.annotations.Param; import java.util.List; /** * <p> * Mapper 接口 * </p> * * @author 无关风月 * @since 2024-08-06 */ public interface TVipMapper extends BaseMapper<TVip> { List<TVip> pageList( @Param("pageInfo")PageInfo<TVip> pageInfo); } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TVipOrderMapper.java
New file @@ -0,0 +1,27 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.order.api.model.TVipOrder; import com.ruoyi.order.api.query.VipShoppingOrderQuery; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.math.BigDecimal; import java.time.LocalDate; import java.util.List; /** * <p> * Mapper 接口 * </p> * * @author xiaochen * @since 2024-08-07 */ @Mapper public interface TVipOrderMapper extends BaseMapper<TVipOrder> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mapper/TVipOrderRefundMapper.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.order.api.model.TVipOrderRefund; /** * <p> * Mapper 接口 * </p> * * @author xiaochen * @since 2024-08-26 */ public interface TVipOrderRefundMapper extends BaseMapper<TVipOrderRefund> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/AccountingStrategyDetailOrderService.java
New file @@ -0,0 +1,11 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.order.api.model.AccountingStrategyDetailOrder; /** * @author zhibing.pu * @Date 2024/9/4 15:41 */ public interface AccountingStrategyDetailOrderService extends IService<AccountingStrategyDetailOrder> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/AccountingStrategyOrderService.java
New file @@ -0,0 +1,11 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.order.api.model.AccountingStrategyOrder; /** * @author zhibing.pu * @Date 2024/9/4 15:36 */ public interface AccountingStrategyOrderService extends IService<AccountingStrategyOrder> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/GenTableColumnService.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.other.api.domain.GenTableColumn; /** * <p> * 服务类 * </p> * * @author 无关风月 * @since 2024-08-06 */ public interface GenTableColumnService extends IService<GenTableColumn> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/GenTableService.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.other.api.domain.GenTable; /** * <p> * 服务类 * </p> * * @author 无关风月 * @since 2024-08-06 */ public interface GenTableService extends IService<GenTable> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/IPartnerService.java
New file @@ -0,0 +1,23 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.chargingPile.api.domain.SiteMenu; import com.ruoyi.chargingPile.api.dto.GetPermissionConfigurationDTO; import com.ruoyi.chargingPile.api.dto.PartnerListDTO; import com.ruoyi.chargingPile.api.model.Partner; import com.ruoyi.chargingPile.api.query.GetPartnerList; import com.ruoyi.chargingPile.api.query.SetPermissionConfiguration; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; import java.util.List; import java.util.Set; /** * @author zhibing.pu * @Date 2024/8/7 13:48 */ public interface IPartnerService extends IService<Partner> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/IRegionService.java
New file @@ -0,0 +1,11 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.other.api.domain.Region; /** * @author zhibing.pu * @Date 2024/8/8 11:59 */ public interface IRegionService extends IService<Region> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/ISiteService.java
New file @@ -0,0 +1,24 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.chargingPile.api.dto.GetSiteListDTO; import com.ruoyi.chargingPile.api.model.Site; import com.ruoyi.chargingPile.api.query.GetSiteList; import com.ruoyi.chargingPile.api.query.SiteDetailQuery; import com.ruoyi.chargingPile.api.query.SiteQuery; import com.ruoyi.chargingPile.api.vo.SiteDetailVO; import com.ruoyi.chargingPile.api.vo.SiteVO; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; import java.util.List; /** * @author zhibing.pu * @Date 2024/8/7 19:54 */ public interface ISiteService extends IService<Site> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/ISysConfigService.java
New file @@ -0,0 +1,14 @@ package com.ruoyi.jianguan.service; import java.util.List; /** * 参数配置 服务层 * * @author ruoyi */ public interface ISysConfigService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/ISysDeptService.java
New file @@ -0,0 +1,15 @@ package com.ruoyi.jianguan.service; import com.ruoyi.system.api.domain.SysDept; import java.util.List; /** * 部门管理 服务层 * * @author ruoyi */ public interface ISysDeptService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/ISysDictDataService.java
New file @@ -0,0 +1,15 @@ package com.ruoyi.jianguan.service; import com.ruoyi.system.api.domain.SysDictData; import java.util.List; /** * 字典 业务层 * * @author ruoyi */ public interface ISysDictDataService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/ISysDictTypeService.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.service; import com.ruoyi.system.api.domain.SysDictData; import com.ruoyi.system.api.domain.SysDictType; import java.util.List; /** * 字典 业务层 * * @author ruoyi */ public interface ISysDictTypeService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/ISysLoginLogService.java
New file @@ -0,0 +1,17 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.BasePage; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.system.api.domain.SysLoginLog; /** * @author zhibing.pu * @Date 2024/8/12 15:47 */ public interface ISysLoginLogService extends IService<SysLoginLog> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/ISysMenuService.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.jianguan.domain.SysMenu; import java.util.List; import java.util.Set; /** * 菜单 业务层 * * @author ruoyi */ public interface ISysMenuService extends IService<SysMenu> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/ISysNoticeService.java
New file @@ -0,0 +1,13 @@ package com.ruoyi.jianguan.service; import java.util.List; /** * 公告 服务层 * * @author ruoyi */ public interface ISysNoticeService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/ISysOperLogService.java
New file @@ -0,0 +1,15 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.system.api.domain.SysOperLog; import java.util.List; /** * 操作日志 服务层 * * @author ruoyi */ public interface ISysOperLogService extends IService<SysOperLog> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/ISysPermissionService.java
New file @@ -0,0 +1,15 @@ package com.ruoyi.jianguan.service; import com.ruoyi.system.api.domain.SysUser; import java.util.Set; /** * 权限信息 服务层 * * @author ruoyi */ public interface ISysPermissionService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/ISysPostService.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.service; import com.ruoyi.jianguan.domain.SysPost; import java.util.List; /** * 岗位信息 服务层 * * @author ruoyi */ public interface ISysPostService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/ISysRoleService.java
New file @@ -0,0 +1,18 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.jianguan.domain.SysUserRole; import com.ruoyi.system.api.domain.SysRole; import java.util.List; import java.util.Set; /** * 角色业务层 * * @author ruoyi */ public interface ISysRoleService extends IService<SysRole> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/ISysUserOnlineService.java
New file @@ -0,0 +1,14 @@ package com.ruoyi.jianguan.service; import com.ruoyi.jianguan.domain.SysUserOnline; import com.ruoyi.system.api.model.LoginUser; /** * 在线用户 服务层 * * @author ruoyi */ public interface ISysUserOnlineService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/ISysUserRoleService.java
New file @@ -0,0 +1,18 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.jianguan.domain.SysUserRole; import java.util.List; /** * 用户和角色关联Service接口 * * @author xiaochen * @date 2023-06-12 */ public interface ISysUserRoleService extends IService<SysUserRole> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/ISysUserService.java
New file @@ -0,0 +1,19 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.query.ChangeUserQuery; import java.util.ArrayList; import java.util.List; /** * 用户 业务层 * * @author ruoyi */ public interface ISysUserService extends IService<SysUser> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/OperatorService.java
New file @@ -0,0 +1,11 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.other.api.domain.Operator; /** * @author zhibing.pu * @Date 2025/1/22 15:09 */ public interface OperatorService extends IService<Operator> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TAccountingStrategyDetailService.java
New file @@ -0,0 +1,21 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.chargingPile.api.model.TAccountingStrategyDetail; import com.ruoyi.chargingPile.api.vo.StrategyPriceVO; import com.ruoyi.chargingPile.api.vo.TAccountingStrategyDetailVO; import java.util.List; /** * <p> * 计费策略明细 服务类 * </p> * * @author xiaochen * @since 2024-08-06 */ public interface TAccountingStrategyDetailService extends IService<TAccountingStrategyDetail> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TAccountingStrategyService.java
New file @@ -0,0 +1,22 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.chargingPile.api.model.TAccountingStrategy; import com.ruoyi.chargingPile.api.query.TAccountingStrategyQuery; import com.ruoyi.chargingPile.api.vo.TAccountingStrategyVO; import com.ruoyi.common.core.web.page.PageInfo; import java.util.List; /** * <p> * 计费策略 服务类 * </p> * * @author xiaochen * @since 2024-08-06 */ public interface TAccountingStrategyService extends IService<TAccountingStrategy> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TActivityService.java
New file @@ -0,0 +1,18 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.other.api.domain.TActivity; import com.ruoyi.other.api.dto.AdvertisingDTO; /** * <p> * 服务类 * </p> * * @author 无关风月 * @since 2024-08-06 */ public interface TActivityService extends IService<TActivity> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TAdvertisingService.java
New file @@ -0,0 +1,18 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.other.api.domain.TAdvertising; import com.ruoyi.other.api.dto.AdvertisingDTO; /** * <p> * 服务类 * </p> * * @author 无关风月 * @since 2024-08-06 */ public interface TAdvertisingService extends IService<TAdvertising> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TAppCouponService.java
New file @@ -0,0 +1,24 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.account.api.dto.CouponListDto; import com.ruoyi.account.api.model.TAppCoupon; import com.ruoyi.account.api.query.ExchangeRecordGoodsQuery; import com.ruoyi.account.api.vo.ExchangeRecordVO; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.other.api.vo.CouponListVOVO; import java.util.List; /** * <p> * 服务类 * </p> * * @author luodangjia * @since 2024-08-06 */ public interface TAppCouponService extends IService<TAppCoupon> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TAppUserAddressService.java
New file @@ -0,0 +1,18 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.account.api.model.TAppUserAddress; /** * <p> * 服务类 * </p> * * @author luodangjia * @since 2024-08-06 */ public interface TAppUserAddressService extends IService<TAppUserAddress> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TAppUserCarService.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.account.api.model.TAppUserCar; /** * <p> * 服务类 * </p> * * @author luodangjia * @since 2024-08-06 */ public interface TAppUserCarService extends IService<TAppUserCar> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TAppUserIntegralChangeService.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.account.api.model.TAppUserIntegralChange; /** * <p> * 服务类 * </p> * * @author luodangjia * @since 2024-08-06 */ public interface TAppUserIntegralChangeService extends IService<TAppUserIntegralChange> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TAppUserService.java
New file @@ -0,0 +1,19 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.account.api.model.TAppUser; import java.util.Map; /** * <p> * 服务类 * </p> * * @author luodangjia * @since 2024-08-06 */ public interface TAppUserService extends IService<TAppUser> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TAppUserSignService.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.account.api.model.TAppUserSign; /** * <p> * 服务类 * </p> * * @author luodangjia * @since 2024-08-06 */ public interface TAppUserSignService extends IService<TAppUserSign> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TAppUserTagService.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.account.api.model.TAppUserTag; /** * <p> * 服务类 * </p> * * @author luodangjia * @since 2024-08-06 */ public interface TAppUserTagService extends IService<TAppUserTag> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TAppUserVipDetailService.java
New file @@ -0,0 +1,17 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.account.api.model.TAppUserVipDetail; /** * <p> * 服务类 * </p> * * @author luodangjia * @since 2024-08-08 */ public interface TAppUserVipDetailService extends IService<TAppUserVipDetail> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TApplyChargingPileService.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.chargingPile.api.model.TApplyChargingPile; /** * <p> * 服务类 * </p> * * @author xiaochen * @since 2024-08-07 */ public interface TApplyChargingPileService extends IService<TApplyChargingPile> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TCarportService.java
New file @@ -0,0 +1,19 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.chargingPile.api.model.TCarport; import com.ruoyi.chargingPile.api.vo.TCarportVO; import java.util.List; /** * <p> * 车库 服务类 * </p> * * @author xiaochen * @since 2024-08-06 */ public interface TCarportService extends IService<TCarport> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TChargingBillService.java
New file @@ -0,0 +1,20 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.order.api.model.ChargingListQuery; import com.ruoyi.order.api.model.TChargingBill; import com.ruoyi.order.api.vo.ChargingBillVO; /** * <p> * 服务类 * </p> * * @author xiaochen * @since 2024-08-07 */ public interface TChargingBillService extends IService<TChargingBill> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TChargingGunService.java
New file @@ -0,0 +1,27 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.chargingPile.api.dto.TChargingGunDTO; import com.ruoyi.chargingPile.api.model.TChargingGun; import com.ruoyi.chargingPile.api.query.TChargingGunQuery; import com.ruoyi.chargingPile.api.vo.ChargingGunCountVO; import com.ruoyi.chargingPile.api.vo.GunStatusStatisticsVO; import com.ruoyi.chargingPile.api.vo.TChargingGunVO; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; import java.util.List; import java.util.Map; /** * <p> * 充电枪 服务类 * </p> * * @author xiaochen * @since 2024-08-06 */ public interface TChargingGunService extends IService<TChargingGun> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TChargingOrderAccountingStrategyService.java
New file @@ -0,0 +1,21 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.order.api.model.TChargingOrderAccountingStrategy; import java.util.List; import java.util.Map; import java.util.Set; /** * <p> * 服务类 * </p> * * @author xiaochen * @since 2024-08-07 */ public interface TChargingOrderAccountingStrategyService extends IService<TChargingOrderAccountingStrategy> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TChargingOrderRefundService.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.order.api.model.TChargingOrderRefund; /** * <p> * 服务类 * </p> * * @author xiaochen * @since 2024-08-26 */ public interface TChargingOrderRefundService extends IService<TChargingOrderRefund> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TChargingOrderService.java
New file @@ -0,0 +1,34 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.dto.ChargingOrderGroup; 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.*; 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.*; import org.springframework.web.bind.annotation.RequestParam; import java.math.BigDecimal; import java.time.LocalDate; import java.util.List; import java.util.Map; /** * <p> * 服务类 * </p> * * @author xiaochen * @since 2024-08-07 */ public interface TChargingOrderService extends IService<TChargingOrder> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TChargingPileNotificationService.java
New file @@ -0,0 +1,21 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.chargingPile.api.model.TChargingPileNotification; import com.ruoyi.common.core.web.page.BasePage; import com.ruoyi.common.core.web.page.PageInfo; /** * <p> * 服务类 * </p> * * @author xiaochen * @since 2024-08-08 */ public interface TChargingPileNotificationService extends IService<TChargingPileNotification> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TChargingPileService.java
New file @@ -0,0 +1,26 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.chargingPile.api.dto.PageChargingPileListDTO; import com.ruoyi.chargingPile.api.model.TChargingPile; import com.ruoyi.chargingPile.api.query.BatchSetAccountingStrategy; import com.ruoyi.chargingPile.api.query.PageChargingPileList; import com.ruoyi.chargingPile.api.vo.TChargingPileVO; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; import java.util.List; /** * <p> * 充电桩 服务类 * </p> * * @author xiaochen * @since 2024-08-06 */ public interface TChargingPileService extends IService<TChargingPile> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TCompanyService.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.other.api.domain.TCompany; /** * <p> * 服务类 * </p> * * @author 无关风月 * @since 2024-08-06 */ public interface TCompanyService extends IService<TCompany> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TCouponService.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.other.api.domain.TCoupon; /** * <p> * 服务类 * </p> * * @author 无关风月 * @since 2024-08-06 */ public interface TCouponService extends IService<TCoupon> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TEnterpriseUserApplicationService.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.other.api.domain.TEnterpriseUserApplication; /** * <p> * 服务类 * </p> * * @author 无关风月 * @since 2024-08-06 */ public interface TEnterpriseUserApplicationService extends IService<TEnterpriseUserApplication> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TEvaluationTagService.java
New file @@ -0,0 +1,22 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.common.core.web.page.BasePage; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.other.api.domain.TEvaluationTag; import com.ruoyi.other.api.vo.TEvaluationTagVO; import java.util.List; /** * <p> * 服务类 * </p> * * @author 无关风月 * @since 2024-08-06 */ public interface TEvaluationTagService extends IService<TEvaluationTag> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TExchangeOrderService.java
New file @@ -0,0 +1,22 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.order.api.model.TExchangeOrder; import com.ruoyi.order.api.query.ShoppingOrderQuery; import java.util.Map; /** * <p> * 服务类 * </p> * * @author xiaochen * @since 2024-08-07 */ public interface TExchangeOrderService extends IService<TExchangeOrder> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TFaultMessageService.java
New file @@ -0,0 +1,20 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.chargingPile.api.model.TFaultMessage; import com.ruoyi.common.core.web.page.PageInfo; import java.util.List; /** * <p> * 服务类 * </p> * * @author xiaochen * @since 2024-08-08 */ public interface TFaultMessageService extends IService<TFaultMessage> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TGoodsService.java
New file @@ -0,0 +1,20 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.common.core.dto.AppGoodQuery; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.other.api.domain.TGoods; import com.ruoyi.other.api.dto.GoodsDTO; /** * <p> * 服务类 * </p> * * @author 无关风月 * @since 2024-08-06 */ public interface TGoodsService extends IService<TGoods> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TGrantVipService.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.order.api.model.TGrantVip; /** * <p> * 服务类 * </p> * * @author xiaochen * @since 2024-08-07 */ public interface TGrantVipService extends IService<TGrantVip> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/THtmlService.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.other.api.domain.THtml; /** * <p> * 服务类 * </p> * * @author 无关风月 * @since 2024-08-06 */ public interface THtmlService extends IService<THtml> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TIntegralRuleService.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.other.api.domain.TIntegralRule; /** * <p> * 服务类 * </p> * * @author 无关风月 * @since 2024-08-06 */ public interface TIntegralRuleService extends IService<TIntegralRule> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TInviteUserService.java
New file @@ -0,0 +1,18 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.account.api.model.TInviteUser; /** * <p> * 服务类 * </p> * * @author luodangjia * @since 2024-08-06 */ public interface TInviteUserService extends IService<TInviteUser> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TInvoiceInformationService.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.account.api.model.TInvoiceInformation; /** * <p> * 服务类 * </p> * * @author luodangjia * @since 2024-08-06 */ public interface TInvoiceInformationService extends IService<TInvoiceInformation> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TInvoiceTypeService.java
New file @@ -0,0 +1,22 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.other.api.domain.TInvoiceType; /** * <p> * 服务类 * </p> * * @author 无关风月 * @since 2024-08-06 */ public interface TInvoiceTypeService extends IService<TInvoiceType> { /** * 获取发票类型列表数据 * @param pageList * @return */ } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TMonitoringEquipmentService.java
New file @@ -0,0 +1,25 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.chargingPile.api.model.TMonitoringEquipment; import com.ruoyi.chargingPile.api.query.TMonitoringEquipmentQuery; import com.ruoyi.chargingPile.api.vo.TMonitoringEquipmentVO; import com.ruoyi.common.core.web.page.PageInfo; /** * <p> * 监控 服务类 * </p> * * @author xiaochen * @since 2024-08-06 */ public interface TMonitoringEquipmentService extends IService<TMonitoringEquipment> { /** * 查询监控分页列表 * @param query * @return */ } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TNoticeService.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.other.api.domain.TNotice; /** * <p> * 服务类 * </p> * * @author 无关风月 * @since 2024-08-06 */ public interface TNoticeService extends IService<TNotice> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TOrderAppealService.java
New file @@ -0,0 +1,20 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.order.api.model.TOrderAppeal; import com.ruoyi.order.api.query.TOrderAppealQuery; import com.ruoyi.order.api.vo.TOrderAppealVO; /** * <p> * 服务类 * </p> * * @author xiaochen * @since 2024-08-07 */ public interface TOrderAppealService extends IService<TOrderAppeal> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TOrderEvaluateService.java
New file @@ -0,0 +1,26 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.order.api.model.TOrderEvaluate; import com.ruoyi.order.api.query.TOrderEvaluateQuery; import com.ruoyi.order.api.vo.SiteDetailEvaluateVO; import com.ruoyi.order.api.vo.TOrderEvaluateVO; import com.ruoyi.other.api.vo.TEvaluationTagVO; import java.util.List; import java.util.Map; /** * <p> * 服务类 * </p> * * @author xiaochen * @since 2024-08-07 */ public interface TOrderEvaluateService extends IService<TOrderEvaluate> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TOrderEvaluateTagService.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.order.api.model.TOrderEvaluateTag; /** * <p> * 服务类 * </p> * * @author xiaochen * @since 2024-08-07 */ public interface TOrderEvaluateTagService extends IService<TOrderEvaluateTag> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TOrderInvoiceDetailService.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.order.api.model.TOrderInvoiceDetail; /** * <p> * 服务类 * </p> * * @author xiaochen * @since 2024-08-07 */ public interface TOrderInvoiceDetailService extends IService<TOrderInvoiceDetail> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TOrderInvoiceService.java
New file @@ -0,0 +1,26 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.order.api.model.TOrderInvoice; import com.ruoyi.order.api.query.TOrderInvoiceQuery; import com.ruoyi.order.api.vo.TOrderInvoiceVO; import java.util.List; import java.util.Map; /** * <p> * 服务类 * </p> * * @author xiaochen * @since 2024-08-07 */ public interface TOrderInvoiceService extends IService<TOrderInvoice> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TParkingLotService.java
New file @@ -0,0 +1,22 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.chargingPile.api.model.TParkingLot; import com.ruoyi.chargingPile.api.query.TParkingLotQuery; import com.ruoyi.chargingPile.api.vo.TParkingLotVO; import com.ruoyi.common.core.web.page.PageInfo; import java.util.List; /** * <p> * 停车场 服务类 * </p> * * @author xiaochen * @since 2024-08-06 */ public interface TParkingLotService extends IService<TParkingLot> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TParkingRecordService.java
New file @@ -0,0 +1,23 @@ package com.ruoyi.jianguan.service; 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 java.math.BigDecimal; import java.util.List; import java.util.Map; /** * <p> * 服务类 * </p> * * @author xiaochen * @since 2024-08-08 */ public interface TParkingRecordService extends IService<TParkingRecord> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TPartnerSiteService.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.chargingPile.api.model.TPartnerSite; /** * <p> * 服务类 * </p> * * @author xiaochen * @since 2024-08-08 */ public interface TPartnerSiteService extends IService<TPartnerSite> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TRepairService.java
New file @@ -0,0 +1,20 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.chargingPile.api.model.TRepair; import com.ruoyi.common.core.web.page.PageInfo; import java.util.List; /** * <p> * 服务类 * </p> * * @author xiaochen * @since 2024-08-08 */ public interface TRepairService extends IService<TRepair> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TRoleSiteService.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.other.api.domain.TRoleSite; /** * <p> * 服务类 * </p> * * @author 无关风月 * @since 2024-08-06 */ public interface TRoleSiteService extends IService<TRoleSite> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TSettlementConfirmService.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.order.api.model.TSettlementConfirm; /** * <p> * 服务类 * </p> * * @author xiaochen * @since 2024-08-07 */ public interface TSettlementConfirmService extends IService<TSettlementConfirm> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TShoppingOrderRefundService.java
New file @@ -0,0 +1,15 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.order.api.model.TShoppingOrderRefund; /** * <p> * 服务类 * </p> * * @author xiaochen * @since 2024-08-26 */ public interface TShoppingOrderRefundService extends IService<TShoppingOrderRefund> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TShoppingOrderService.java
New file @@ -0,0 +1,27 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.order.api.model.TShoppingOrder; import com.ruoyi.order.api.query.ShoppingOrderQuery; import com.ruoyi.order.api.query.TActivityStatisticsQuery; import com.ruoyi.order.api.vo.TActivityVO; import java.math.BigDecimal; import java.time.LocalDate; import java.util.List; import java.util.Map; /** * <p> * 服务类 * </p> * * @author xiaochen * @since 2024-08-07 */ public interface TShoppingOrderService extends IService<TShoppingOrder> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TSiteMenuService.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.chargingPile.api.model.TSiteMenu; /** * <p> * 服务类 * </p> * * @author xiaochen * @since 2024-08-08 */ public interface TSiteMenuService extends IService<TSiteMenu> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TSystemConfigurationService.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.other.api.domain.TSystemConfiguration; /** * <p> * 服务类 * </p> * * @author 无关风月 * @since 2024-08-06 */ public interface TSystemConfigurationService extends IService<TSystemConfiguration> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TUserSiteService.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.other.api.domain.TUserSite; /** * <p> * 服务类 * </p> * * @author 无关风月 * @since 2024-08-06 */ public interface TUserSiteService extends IService<TUserSite> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TUserTagService.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.other.api.domain.TUserTag; /** * <p> * 服务类 * </p> * * @author 无关风月 * @since 2024-08-06 */ public interface TUserTagService extends IService<TUserTag> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TVehicleRampService.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.chargingPile.api.model.TVehicleRamp; /** * <p> * 车道 服务类 * </p> * * @author xiaochen * @since 2024-08-06 */ public interface TVehicleRampService extends IService<TVehicleRamp> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TVipOrderRefundService.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.order.api.model.TVipOrderRefund; /** * <p> * 服务类 * </p> * * @author xiaochen * @since 2024-08-26 */ public interface TVipOrderRefundService extends IService<TVipOrderRefund> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TVipOrderService.java
New file @@ -0,0 +1,23 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.order.api.model.TVipOrder; import com.ruoyi.order.api.query.VipShoppingOrderQuery; import java.math.BigDecimal; import java.time.LocalDate; import java.util.List; /** * <p> * 服务类 * </p> * * @author xiaochen * @since 2024-08-07 */ public interface TVipOrderService extends IService<TVipOrder> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/TVipService.java
New file @@ -0,0 +1,20 @@ package com.ruoyi.jianguan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.other.api.domain.TVip; import java.math.BigDecimal; /** * <p> * 服务类 * </p> * * @author 无关风月 * @since 2024-08-06 */ public interface TVipService extends IService<TVip> { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/AccountingStrategyDetailOrderServiceImpl.java
New file @@ -0,0 +1,15 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.jianguan.mapper.AccountingStrategyDetailOrderMapper; import com.ruoyi.jianguan.service.AccountingStrategyDetailOrderService; import com.ruoyi.order.api.model.AccountingStrategyDetailOrder; import org.springframework.stereotype.Service; /** * @author zhibing.pu * @Date 2024/9/4 15:42 */ @Service public class AccountingStrategyDetailOrderServiceImpl extends ServiceImpl<AccountingStrategyDetailOrderMapper, AccountingStrategyDetailOrder> implements AccountingStrategyDetailOrderService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/AccountingStrategyOrderServiceImpl.java
New file @@ -0,0 +1,15 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.jianguan.mapper.AccountingStrategyOrderMapper; import com.ruoyi.jianguan.service.AccountingStrategyOrderService; import com.ruoyi.order.api.model.AccountingStrategyOrder; import org.springframework.stereotype.Service; /** * @author zhibing.pu * @Date 2024/9/4 15:36 */ @Service public class AccountingStrategyOrderServiceImpl extends ServiceImpl<AccountingStrategyOrderMapper, AccountingStrategyOrder> implements AccountingStrategyOrderService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/GenTableColumnServiceImpl.java
New file @@ -0,0 +1,20 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.jianguan.mapper.GenTableColumnMapper; import com.ruoyi.jianguan.service.GenTableColumnService; import com.ruoyi.other.api.domain.GenTableColumn; import org.springframework.stereotype.Service; /** * <p> * 服务实现类 * </p> * * @author 无关风月 * @since 2024-08-06 */ @Service public class GenTableColumnServiceImpl extends ServiceImpl<GenTableColumnMapper, GenTableColumn> implements GenTableColumnService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/GenTableServiceImpl.java
New file @@ -0,0 +1,20 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.jianguan.mapper.GenTableMapper; import com.ruoyi.jianguan.service.GenTableService; import com.ruoyi.other.api.domain.GenTable; import org.springframework.stereotype.Service; /** * <p> * 服务实现类 * </p> * * @author 无关风月 * @since 2024-08-06 */ @Service public class GenTableServiceImpl extends ServiceImpl<GenTableMapper, GenTable> implements GenTableService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/OperatorServiceImpl.java
New file @@ -0,0 +1,15 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.jianguan.mapper.OperatorMapper; import com.ruoyi.jianguan.service.OperatorService; import com.ruoyi.other.api.domain.Operator; import org.springframework.stereotype.Service; /** * @author zhibing.pu * @Date 2025/1/22 15:09 */ @Service public class OperatorServiceImpl extends ServiceImpl<OperatorMapper, Operator> implements OperatorService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/PartnerServiceImpl.java
New file @@ -0,0 +1,41 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.chargingPile.api.domain.SiteMenu; import com.ruoyi.chargingPile.api.dto.GetPermissionConfigurationDTO; import com.ruoyi.chargingPile.api.dto.PartnerListDTO; import com.ruoyi.chargingPile.api.model.*; import com.ruoyi.chargingPile.api.query.GetPartnerList; import com.ruoyi.chargingPile.api.query.SetPermissionConfiguration; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.jianguan.mapper.PartnerMapper; import com.ruoyi.jianguan.service.*; import com.ruoyi.other.api.feignClient.RoleSiteClient; import com.ruoyi.other.api.feignClient.UserSiteClient; import com.ruoyi.system.api.domain.SysRole; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysRoleClient; import com.ruoyi.system.api.feignClient.SysUserClient; import com.ruoyi.system.api.feignClient.SysUserRoleClient; import com.ruoyi.system.api.model.GetSysRoleByIds; import com.ruoyi.system.api.model.SysUserRoleVo; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.*; import java.util.stream.Collectors; /** * @author zhibing.pu * @Date 2024/8/7 13:49 */ @Service public class PartnerServiceImpl extends ServiceImpl<PartnerMapper, Partner> implements IPartnerService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/RegionServiceImpl.java
New file @@ -0,0 +1,15 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.jianguan.mapper.RegionMapper; import com.ruoyi.jianguan.service.IRegionService; import com.ruoyi.other.api.domain.Region; import org.springframework.stereotype.Service; /** * @author zhibing.pu * @Date 2024/8/8 11:59 */ @Service public class RegionServiceImpl extends ServiceImpl<RegionMapper, Region> implements IRegionService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/SiteServiceImpl.java
New file @@ -0,0 +1,53 @@ package com.ruoyi.jianguan.service.impl; import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.api.feignClient.AppUserClient; import com.ruoyi.account.api.feignClient.AppUserVipDetailClient; import com.ruoyi.account.api.model.TAppUser; import com.ruoyi.account.api.model.TAppUserVipDetail; import com.ruoyi.account.api.vo.GetAppUserVipDetail; import com.ruoyi.chargingPile.api.domain.SiteMenu; import com.ruoyi.chargingPile.api.dto.GetSiteListDTO; import com.ruoyi.chargingPile.api.model.*; import com.ruoyi.chargingPile.api.query.GetSiteList; import com.ruoyi.chargingPile.api.query.SiteDetailQuery; import com.ruoyi.chargingPile.api.query.SiteQuery; import com.ruoyi.chargingPile.api.vo.SiteDetailVO; import com.ruoyi.chargingPile.api.vo.SiteVO; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.integration.api.feignClient.IntegrationClient; import com.ruoyi.integration.api.feignClient.TCECClient; import com.ruoyi.jianguan.mapper.SiteMapper; import com.ruoyi.jianguan.service.ISiteService; import com.ruoyi.other.api.domain.TVip; import com.ruoyi.other.api.feignClient.RoleSiteClient; import com.ruoyi.other.api.feignClient.UserSiteClient; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysUserClient; import com.ruoyi.system.api.feignClient.SysUserRoleClient; import com.ruoyi.system.api.model.SysUserRoleVo; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; /** * @author zhibing.pu * @Date 2024/8/7 19:54 */ @Service public class SiteServiceImpl extends ServiceImpl<SiteMapper, Site> implements ISiteService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/SysConfigServiceImpl.java
New file @@ -0,0 +1,27 @@ package com.ruoyi.jianguan.service.impl; import com.ruoyi.common.core.constant.CacheConstants; import com.ruoyi.common.core.constant.UserConstants; import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.text.Convert; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.redis.service.RedisService; import com.ruoyi.jianguan.domain.SysConfig; import com.ruoyi.jianguan.mapper.SysConfigMapper; import com.ruoyi.jianguan.service.ISysConfigService; import org.springframework.stereotype.Service; import javax.annotation.PostConstruct; import javax.annotation.Resource; import java.util.Collection; import java.util.List; /** * 参数配置 服务层实现 * * @author ruoyi */ @Service public class SysConfigServiceImpl implements ISysConfigService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/SysDeptServiceImpl.java
New file @@ -0,0 +1,33 @@ package com.ruoyi.jianguan.service.impl; import com.ruoyi.common.core.constant.UserConstants; import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.text.Convert; import com.ruoyi.common.core.utils.SpringUtils; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.jianguan.mapper.SysDeptMapper; import com.ruoyi.jianguan.mapper.SysRoleMapper; import com.ruoyi.jianguan.service.ISysDeptService; import com.ruoyi.system.api.domain.SysDept; import com.ruoyi.system.api.domain.SysRole; import com.ruoyi.system.api.domain.SysUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.stream.Collectors; /** * 部门管理 服务实现 * * @author ruoyi */ @Service public class SysDeptServiceImpl implements ISysDeptService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/SysDictDataServiceImpl.java
New file @@ -0,0 +1,21 @@ package com.ruoyi.jianguan.service.impl; import com.ruoyi.common.security.utils.DictUtils; import com.ruoyi.jianguan.mapper.SysDictDataMapper; import com.ruoyi.jianguan.service.ISysDictDataService; import com.ruoyi.system.api.domain.SysDictData; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; /** * 字典 业务层处理 * * @author ruoyi */ @Service public class SysDictDataServiceImpl implements ISysDictDataService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/SysDictTypeServiceImpl.java
New file @@ -0,0 +1,31 @@ package com.ruoyi.jianguan.service.impl; import com.ruoyi.common.core.constant.UserConstants; import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.security.utils.DictUtils; import com.ruoyi.jianguan.mapper.SysDictDataMapper; import com.ruoyi.jianguan.mapper.SysDictTypeMapper; import com.ruoyi.jianguan.service.ISysDictTypeService; import com.ruoyi.system.api.domain.SysDictData; import com.ruoyi.system.api.domain.SysDictType; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.PostConstruct; import java.util.Comparator; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * 字典 业务层处理 * * @author ruoyi */ @Service public class SysDictTypeServiceImpl implements ISysDictTypeService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/SysLoginLogServiceImpl.java
New file @@ -0,0 +1,27 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.BasePage; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.jianguan.mapper.SysLoginLogMapper; import com.ruoyi.jianguan.service.ISysLoginLogService; import com.ruoyi.jianguan.service.ISysUserService; import com.ruoyi.system.api.domain.SysLoginLog; import com.ruoyi.system.api.domain.SysUser; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.time.LocalDateTime; import java.util.List; /** * @author zhibing.pu * @Date 2024/8/12 15:47 */ @Service public class SysLoginLogServiceImpl extends ServiceImpl<SysLoginLogMapper, SysLoginLog> implements ISysLoginLogService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/SysMenuServiceImpl.java
New file @@ -0,0 +1,31 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.core.constant.Constants; import com.ruoyi.common.core.constant.UserConstants; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.jianguan.domain.SysMenu; import com.ruoyi.jianguan.domain.SysMenus; import com.ruoyi.jianguan.domain.SysUserRole; import com.ruoyi.jianguan.mapper.*; import com.ruoyi.jianguan.service.ISysMenuService; import com.ruoyi.system.api.domain.SysRole; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.*; import java.util.stream.Collectors; /** * 菜单 业务层处理 * * @author ruoyi */ @Service public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> implements ISysMenuService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/SysNoticeServiceImpl.java
New file @@ -0,0 +1,18 @@ package com.ruoyi.jianguan.service.impl; import com.ruoyi.jianguan.mapper.SysNoticeMapper; import com.ruoyi.jianguan.service.ISysNoticeService; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; /** * 公告 服务层实现 * * @author ruoyi */ @Service public class SysNoticeServiceImpl implements ISysNoticeService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/SysOperLogServiceImpl.java
New file @@ -0,0 +1,22 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.jianguan.mapper.SysOperLogMapper; import com.ruoyi.jianguan.service.ISysOperLogService; import com.ruoyi.system.api.domain.SysOperLog; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; /** * 操作日志 服务层处理 * * @author ruoyi */ @Service public class SysOperLogServiceImpl extends ServiceImpl<SysOperLogMapper, SysOperLog> implements ISysOperLogService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/SysPermissionServiceImpl.java
New file @@ -0,0 +1,24 @@ package com.ruoyi.jianguan.service.impl; import com.ruoyi.jianguan.service.ISysMenuService; import com.ruoyi.jianguan.service.ISysPermissionService; import com.ruoyi.jianguan.service.ISysRoleService; import com.ruoyi.system.api.domain.SysRole; import com.ruoyi.system.api.domain.SysUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.HashSet; import java.util.List; import java.util.Set; /** * 用户权限处理 * * @author ruoyi */ @Service public class SysPermissionServiceImpl implements ISysPermissionService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/SysPostServiceImpl.java
New file @@ -0,0 +1,24 @@ package com.ruoyi.jianguan.service.impl; import com.ruoyi.common.core.constant.UserConstants; import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.jianguan.domain.SysPost; import com.ruoyi.jianguan.mapper.SysPostMapper; import com.ruoyi.jianguan.mapper.SysUserPostMapper; import com.ruoyi.jianguan.service.ISysPostService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; /** * 岗位信息 服务层处理 * * @author ruoyi */ @Service public class SysPostServiceImpl implements ISysPostService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/SysRoleServiceImpl.java
New file @@ -0,0 +1,33 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.core.constant.UserConstants; import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.utils.SpringUtils; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.jianguan.domain.SysRoleDept; import com.ruoyi.jianguan.domain.SysRoleMenu; import com.ruoyi.jianguan.domain.SysUserRole; import com.ruoyi.jianguan.mapper.SysRoleDeptMapper; import com.ruoyi.jianguan.mapper.SysRoleMapper; import com.ruoyi.jianguan.mapper.SysRoleMenuMapper; import com.ruoyi.jianguan.mapper.SysUserRoleMapper; import com.ruoyi.jianguan.service.ISysRoleService; import com.ruoyi.system.api.domain.SysRole; import com.ruoyi.system.api.domain.SysUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.*; /** * 角色 业务层处理 * * @author ruoyi */ @Service public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> implements ISysRoleService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/SysUserOnlineServiceImpl.java
New file @@ -0,0 +1,18 @@ package com.ruoyi.jianguan.service.impl; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.jianguan.domain.SysUserOnline; import com.ruoyi.jianguan.service.ISysUserOnlineService; import com.ruoyi.system.api.model.LoginUser; import org.springframework.stereotype.Service; /** * 在线用户 服务层处理 * * @author ruoyi */ @Service public class SysUserOnlineServiceImpl implements ISysUserOnlineService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/SysUserRoleServiceImpl.java
New file @@ -0,0 +1,21 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.jianguan.domain.SysUserRole; import com.ruoyi.jianguan.mapper.SysUserRoleMapper; import com.ruoyi.jianguan.service.ISysUserRoleService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; /** * 用户和角色关联Service业务层处理 * * @author xiaochen * @date 2023-06-12 */ @Service public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleMapper, SysUserRole> implements ISysUserRoleService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/SysUserServiceImpl.java
New file @@ -0,0 +1,51 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.chargingPile.api.feignClient.SiteClient; import com.ruoyi.chargingPile.api.model.Site; import com.ruoyi.common.core.constant.UserConstants; import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.utils.SpringUtils; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.bean.BeanValidators; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.jianguan.domain.SysPost; import com.ruoyi.jianguan.domain.SysUserPost; import com.ruoyi.jianguan.domain.SysUserRole; import com.ruoyi.jianguan.mapper.*; import com.ruoyi.jianguan.service.ISysConfigService; import com.ruoyi.jianguan.service.ISysRoleService; import com.ruoyi.jianguan.service.ISysUserRoleService; import com.ruoyi.jianguan.service.ISysUserService; import com.ruoyi.other.api.feignClient.RoleSiteClient; import com.ruoyi.other.api.feignClient.UserSiteClient; import com.ruoyi.system.api.domain.SysRole; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.query.ChangeUserQuery; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import javax.validation.Validator; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.stream.Collectors; /** * 用户 业务层处理 * * @author ruoyi */ @Service public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements ISysUserService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TAccountingStrategyDetailServiceImpl.java
New file @@ -0,0 +1,41 @@ package com.ruoyi.jianguan.service.impl; import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.api.feignClient.AppUserClient; import com.ruoyi.account.api.feignClient.AppUserVipDetailClient; import com.ruoyi.account.api.model.TAppUser; import com.ruoyi.account.api.model.TAppUserVipDetail; import com.ruoyi.account.api.vo.GetAppUserVipDetail; import com.ruoyi.chargingPile.api.model.Site; import com.ruoyi.chargingPile.api.model.TAccountingStrategy; import com.ruoyi.chargingPile.api.model.TAccountingStrategyDetail; import com.ruoyi.chargingPile.api.model.TChargingGun; import com.ruoyi.chargingPile.api.vo.StrategyPriceVO; import com.ruoyi.chargingPile.api.vo.TAccountingStrategyDetailVO; import com.ruoyi.jianguan.mapper.TAccountingStrategyDetailMapper; import com.ruoyi.jianguan.service.TAccountingStrategyDetailService; import com.ruoyi.other.api.domain.TVip; import com.ruoyi.other.api.feignClient.VipClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.math.BigDecimal; import java.time.LocalTime; import java.util.*; import java.util.stream.Collectors; /** * <p> * 计费策略明细 服务实现类 * </p> * * @author xiaochen * @since 2024-08-06 */ @Service public class TAccountingStrategyDetailServiceImpl extends ServiceImpl<TAccountingStrategyDetailMapper, TAccountingStrategyDetail> implements TAccountingStrategyDetailService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TAccountingStrategyServiceImpl.java
New file @@ -0,0 +1,35 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.chargingPile.api.model.TAccountingStrategy; import com.ruoyi.chargingPile.api.query.TAccountingStrategyQuery; import com.ruoyi.chargingPile.api.vo.TAccountingStrategyVO; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.jianguan.mapper.TAccountingStrategyMapper; import com.ruoyi.jianguan.service.TAccountingStrategyService; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysUserClient; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.util.Arrays; import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; /** * <p> * 计费策略 服务实现类 * </p> * * @author xiaochen * @since 2024-08-06 */ @Service public class TAccountingStrategyServiceImpl extends ServiceImpl<TAccountingStrategyMapper, TAccountingStrategy> implements TAccountingStrategyService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TActivityServiceImpl.java
New file @@ -0,0 +1,26 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.jianguan.mapper.TActivityMapper; import com.ruoyi.jianguan.service.TActivityService; import com.ruoyi.other.api.domain.TActivity; import com.ruoyi.other.api.dto.AdvertisingDTO; import org.springframework.stereotype.Service; import java.time.LocalDateTime; import java.util.List; /** * <p> * 服务实现类 * </p> * * @author 无关风月 * @since 2024-08-06 */ @Service public class TActivityServiceImpl extends ServiceImpl<TActivityMapper, TActivity> implements TActivityService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TAdvertisingServiceImpl.java
New file @@ -0,0 +1,26 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.jianguan.mapper.TAdvertisingMapper; import com.ruoyi.jianguan.service.TAdvertisingService; import com.ruoyi.other.api.domain.TAdvertising; import com.ruoyi.other.api.dto.AdvertisingDTO; import org.springframework.stereotype.Service; import java.time.LocalDateTime; import java.util.List; /** * <p> * 服务实现类 * </p> * * @author 无关风月 * @since 2024-08-06 */ @Service public class TAdvertisingServiceImpl extends ServiceImpl<TAdvertisingMapper, TAdvertising> implements TAdvertisingService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TAppCouponServiceImpl.java
New file @@ -0,0 +1,54 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.api.dto.CouponListDto; import com.ruoyi.account.api.model.TAppCoupon; import com.ruoyi.account.api.model.TAppUser; import com.ruoyi.account.api.model.TAppUserVipDetail; import com.ruoyi.account.api.query.ExchangeRecordGoodsQuery; import com.ruoyi.account.api.vo.ExchangeRecordVO; import com.ruoyi.chargingPile.api.feignClient.ChargingPileClient; import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.jianguan.mapper.TAppCouponMapper; import com.ruoyi.jianguan.mapper.TAppUserMapper; import com.ruoyi.jianguan.service.TAppCouponService; import com.ruoyi.jianguan.service.TAppUserVipDetailService; import com.ruoyi.order.api.feignClient.ChargingOrderClient; import com.ruoyi.order.api.feignClient.OrderClient; import com.ruoyi.order.api.query.TChargingCountQuery; import com.ruoyi.other.api.domain.TVip; import com.ruoyi.other.api.feignClient.OtherClient; import com.ruoyi.other.api.feignClient.VipClient; import com.ruoyi.other.api.vo.CouponListVOVO; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import java.math.BigDecimal; import java.math.BigInteger; import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Comparator; import java.util.Date; import java.util.List; import java.util.stream.Collectors; /** * <p> * 服务实现类 * </p> * * @author luodangjia * @since 2024-08-06 */ @Service public class TAppCouponServiceImpl extends ServiceImpl<TAppCouponMapper, TAppCoupon> implements TAppCouponService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TAppUserAddressServiceImpl.java
New file @@ -0,0 +1,22 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.api.model.TAppUserAddress; import com.ruoyi.jianguan.mapper.TAppUserAddressMapper; import com.ruoyi.jianguan.service.TAppUserAddressService; import org.springframework.stereotype.Service; /** * <p> * 服务实现类 * </p> * * @author luodangjia * @since 2024-08-06 */ @Service public class TAppUserAddressServiceImpl extends ServiceImpl<TAppUserAddressMapper, TAppUserAddress> implements TAppUserAddressService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TAppUserCarServiceImpl.java
New file @@ -0,0 +1,20 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.api.model.TAppUserCar; import com.ruoyi.jianguan.mapper.TAppUserCarMapper; import com.ruoyi.jianguan.service.TAppUserCarService; import org.springframework.stereotype.Service; /** * <p> * 服务实现类 * </p> * * @author luodangjia * @since 2024-08-06 */ @Service public class TAppUserCarServiceImpl extends ServiceImpl<TAppUserCarMapper, TAppUserCar> implements TAppUserCarService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TAppUserIntegralChangeServiceImpl.java
New file @@ -0,0 +1,20 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.api.model.TAppUserIntegralChange; import com.ruoyi.jianguan.mapper.TAppUserIntegralChangeMapper; import com.ruoyi.jianguan.service.TAppUserIntegralChangeService; import org.springframework.stereotype.Service; /** * <p> * 服务实现类 * </p> * * @author luodangjia * @since 2024-08-06 */ @Service public class TAppUserIntegralChangeServiceImpl extends ServiceImpl<TAppUserIntegralChangeMapper, TAppUserIntegralChange> implements TAppUserIntegralChangeService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TAppUserServiceImpl.java
New file @@ -0,0 +1,32 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.api.model.TAppUser; import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.jianguan.mapper.TAppUserMapper; import com.ruoyi.jianguan.service.TAppUserService; import com.ruoyi.jianguan.service.TInviteUserService; import com.ruoyi.system.api.model.LoginUserApplet; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import java.util.HashMap; import java.util.Map; import java.util.Objects; /** * <p> * 服务实现类 * </p> * * @author luodangjia * @since 2024-08-06 */ @Service public class TAppUserServiceImpl extends ServiceImpl<TAppUserMapper, TAppUser> implements TAppUserService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TAppUserSignServiceImpl.java
New file @@ -0,0 +1,20 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.api.model.TAppUserSign; import com.ruoyi.jianguan.mapper.TAppUserSignMapper; import com.ruoyi.jianguan.service.TAppUserSignService; import org.springframework.stereotype.Service; /** * <p> * 服务实现类 * </p> * * @author luodangjia * @since 2024-08-06 */ @Service public class TAppUserSignServiceImpl extends ServiceImpl<TAppUserSignMapper, TAppUserSign> implements TAppUserSignService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TAppUserTagServiceImpl.java
New file @@ -0,0 +1,20 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.api.model.TAppUserTag; import com.ruoyi.jianguan.mapper.TAppUserTagMapper; import com.ruoyi.jianguan.service.TAppUserTagService; import org.springframework.stereotype.Service; /** * <p> * 服务实现类 * </p> * * @author luodangjia * @since 2024-08-06 */ @Service public class TAppUserTagServiceImpl extends ServiceImpl<TAppUserTagMapper, TAppUserTag> implements TAppUserTagService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TAppUserVipDetailServiceImpl.java
New file @@ -0,0 +1,26 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.api.model.TAppUserVipDetail; import com.ruoyi.jianguan.mapper.TAppUserVipDetailMapper; import com.ruoyi.jianguan.service.TAppUserVipDetailService; import com.ruoyi.other.api.feignClient.OtherClient; import com.ruoyi.other.api.feignClient.VipClient; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.time.LocalDateTime; /** * <p> * 服务实现类 * </p> * * @author luodangjia * @since 2024-08-08 */ @Service public class TAppUserVipDetailServiceImpl extends ServiceImpl<TAppUserVipDetailMapper, TAppUserVipDetail> implements TAppUserVipDetailService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TApplyChargingPileServiceImpl.java
New file @@ -0,0 +1,20 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.chargingPile.api.model.TApplyChargingPile; import com.ruoyi.jianguan.mapper.TApplyChargingPileMapper; import com.ruoyi.jianguan.service.TApplyChargingPileService; import org.springframework.stereotype.Service; /** * <p> * 服务实现类 * </p> * * @author xiaochen * @since 2024-08-07 */ @Service public class TApplyChargingPileServiceImpl extends ServiceImpl<TApplyChargingPileMapper, TApplyChargingPile> implements TApplyChargingPileService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TCarportServiceImpl.java
New file @@ -0,0 +1,28 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.chargingPile.api.model.TCarport; import com.ruoyi.chargingPile.api.model.TVehicleRamp; import com.ruoyi.chargingPile.api.vo.TCarportVO; import com.ruoyi.jianguan.mapper.TCarportMapper; import com.ruoyi.jianguan.service.TCarportService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; import java.util.stream.Collectors; /** * <p> * 车库 服务实现类 * </p> * * @author xiaochen * @since 2024-08-06 */ @Service public class TCarportServiceImpl extends ServiceImpl<TCarportMapper, TCarport> implements TCarportService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TChargingBillServiceImpl.java
New file @@ -0,0 +1,53 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.api.feignClient.AppUserCarClient; import com.ruoyi.account.api.feignClient.AppUserClient; import com.ruoyi.account.api.model.TAppUser; import com.ruoyi.account.api.model.TAppUserCar; import com.ruoyi.chargingPile.api.dto.GetSiteListDTO; import com.ruoyi.chargingPile.api.feignClient.ChargingGunClient; import com.ruoyi.chargingPile.api.feignClient.ChargingPileClient; import com.ruoyi.chargingPile.api.feignClient.PartnerClient; import com.ruoyi.chargingPile.api.feignClient.SiteClient; import com.ruoyi.chargingPile.api.model.Site; import com.ruoyi.chargingPile.api.model.TChargingGun; import com.ruoyi.chargingPile.api.model.TChargingPile; import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.integration.api.feignClient.UploadRealTimeMonitoringDataClient; import com.ruoyi.jianguan.mapper.TChargingBillMapper; import com.ruoyi.jianguan.mapper.TChargingOrderMapper; import com.ruoyi.jianguan.service.TChargingBillService; import com.ruoyi.order.api.model.*; import com.ruoyi.order.api.vo.ChargingBillListVO; import com.ruoyi.order.api.vo.ChargingBillVO; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysUserClient; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import javax.annotation.Resource; import java.math.BigDecimal; import java.time.LocalDateTime; import java.time.temporal.ChronoUnit; import java.time.temporal.TemporalAdjusters; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; /** * <p> * 服务实现类 * </p> * * @author xiaochen * @since 2024-08-07 */ @Service public class TChargingBillServiceImpl extends ServiceImpl<TChargingBillMapper, TChargingBill> implements TChargingBillService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TChargingGunServiceImpl.java
New file @@ -0,0 +1,58 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.chargingPile.api.domain.SiteMenu; import com.ruoyi.chargingPile.api.dto.TChargingGunDTO; import com.ruoyi.chargingPile.api.feignClient.SiteClient; import com.ruoyi.chargingPile.api.model.Site; import com.ruoyi.chargingPile.api.model.TChargingGun; import com.ruoyi.chargingPile.api.model.TChargingPile; import com.ruoyi.chargingPile.api.query.TChargingGunQuery; import com.ruoyi.chargingPile.api.vo.ChargingGunCountVO; import com.ruoyi.chargingPile.api.vo.GunStatusStatisticsVO; import com.ruoyi.chargingPile.api.vo.StatusModeStatisticsVO; import com.ruoyi.chargingPile.api.vo.TChargingGunVO; import com.ruoyi.common.core.enums.status.ChargingGunModeEnum; import com.ruoyi.common.core.enums.status.ChargingGunStatusEnum; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.integration.api.feignClient.SendMessageClient; import com.ruoyi.integration.api.feignClient.TCECClient; import com.ruoyi.integration.api.model.QrCodeDelivery; import com.ruoyi.jianguan.mapper.SiteMapper; import com.ruoyi.jianguan.mapper.TChargingGunMapper; import com.ruoyi.jianguan.service.IPartnerService; import com.ruoyi.jianguan.service.TChargingGunService; import com.ruoyi.jianguan.service.TChargingPileService; import com.ruoyi.other.api.feignClient.RoleSiteClient; import com.ruoyi.other.api.feignClient.UserSiteClient; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysUserClient; import com.ruoyi.system.api.feignClient.SysUserRoleClient; import com.ruoyi.system.api.model.SysUserRoleVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.util.*; import java.util.stream.Collectors; /** * <p> * 充电枪 服务实现类 * </p> * * @author xiaochen * @since 2024-08-06 */ @Service public class TChargingGunServiceImpl extends ServiceImpl<TChargingGunMapper, TChargingGun> implements TChargingGunService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TChargingOrderAccountingStrategyServiceImpl.java
New file @@ -0,0 +1,32 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.jianguan.mapper.TChargingOrderAccountingStrategyMapper; import com.ruoyi.jianguan.service.TChargingOrderAccountingStrategyService; import com.ruoyi.jianguan.service.TChargingOrderService; import com.ruoyi.order.api.model.TChargingOrder; import com.ruoyi.order.api.model.TChargingOrderAccountingStrategy; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.math.BigDecimal; import java.math.RoundingMode; import java.text.SimpleDateFormat; import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; /** * <p> * 服务实现类 * </p> * * @author xiaochen * @since 2024-08-07 */ @Service public class TChargingOrderAccountingStrategyServiceImpl extends ServiceImpl<TChargingOrderAccountingStrategyMapper, TChargingOrderAccountingStrategy> implements TChargingOrderAccountingStrategyService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TChargingOrderRefundServiceImpl.java
New file @@ -0,0 +1,15 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.jianguan.mapper.TChargingOrderRefundMapper; import com.ruoyi.jianguan.service.TChargingOrderRefundService; import com.ruoyi.order.api.model.TChargingOrderRefund; import org.springframework.stereotype.Service; /** * @author zhibing.pu * @date 2024/8/28 15:18 */ @Service public class TChargingOrderRefundServiceImpl extends ServiceImpl<TChargingOrderRefundMapper, TChargingOrderRefund> implements TChargingOrderRefundService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TChargingOrderServiceImpl.java
New file @@ -0,0 +1,78 @@ package com.ruoyi.jianguan.service.impl; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.api.feignClient.*; import com.ruoyi.account.api.model.*; import com.ruoyi.account.api.vo.GetAppUserVipDetail; import com.ruoyi.account.api.vo.GetInviteUser; import com.ruoyi.chargingPile.api.dto.GetSiteListDTO; import com.ruoyi.chargingPile.api.feignClient.*; import com.ruoyi.chargingPile.api.model.*; import com.ruoyi.chargingPile.api.vo.GetChargingGunByCode; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.dto.ChargingOrderGroup; 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.common.redis.service.RedisService; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.integration.api.feignClient.*; import com.ruoyi.integration.api.model.*; import com.ruoyi.integration.api.vo.StartChargeResult; import com.ruoyi.jianguan.mapper.TChargingOrderMapper; import com.ruoyi.jianguan.mapper.TSettlementConfirmMapper; import com.ruoyi.jianguan.service.*; import com.ruoyi.order.api.dto.SettlementConfirmAdd; import com.ruoyi.order.api.feignClient.AccountingStrategyDetailOrderClient; 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.*; import com.ruoyi.other.api.domain.TVip; import com.ruoyi.other.api.domain.*; import com.ruoyi.other.api.feignClient.IntegralRuleClient; import com.ruoyi.other.api.feignClient.OperatorClient; import com.ruoyi.other.api.feignClient.UserTagClient; import com.ruoyi.other.api.feignClient.VipClient; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysUserClient; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import javax.annotation.Resource; import java.math.BigDecimal; import java.math.MathContext; import java.math.RoundingMode; import java.text.SimpleDateFormat; import java.time.*; import java.time.format.DateTimeFormatter; import java.time.format.TextStyle; import java.time.temporal.ChronoUnit; import java.util.*; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; /** * <p> * 服务实现类 * </p> * * @author xiaochen * @since 2024-08-07 */ @Service public class TChargingOrderServiceImpl extends ServiceImpl<TChargingOrderMapper, TChargingOrder> implements TChargingOrderService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TChargingPileNotificationServiceImpl.java
New file @@ -0,0 +1,40 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.chargingPile.api.domain.SiteMenu; import com.ruoyi.chargingPile.api.model.Site; import com.ruoyi.chargingPile.api.model.TChargingPileNotification; import com.ruoyi.common.core.web.page.BasePage; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.jianguan.mapper.TChargingPileNotificationMapper; import com.ruoyi.jianguan.service.IPartnerService; import com.ruoyi.jianguan.service.TChargingPileNotificationService; import com.ruoyi.other.api.feignClient.RoleSiteClient; import com.ruoyi.other.api.feignClient.UserSiteClient; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysUserClient; import com.ruoyi.system.api.feignClient.SysUserRoleClient; import com.ruoyi.system.api.model.SysUserRoleVo; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.HashSet; import java.util.List; import java.util.Set; /** * <p> * 服务实现类 * </p> * * @author xiaochen * @since 2024-08-08 */ @Service public class TChargingPileNotificationServiceImpl extends ServiceImpl<TChargingPileNotificationMapper, TChargingPileNotification> implements TChargingPileNotificationService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TChargingPileServiceImpl.java
New file @@ -0,0 +1,64 @@ package com.ruoyi.jianguan.service.impl; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.api.dto.SendMessageDTO; import com.ruoyi.account.api.feignClient.AppUserCarClient; import com.ruoyi.account.api.feignClient.AppUserClient; import com.ruoyi.account.api.model.TAppUserCar; import com.ruoyi.chargingPile.api.domain.SiteMenu; import com.ruoyi.chargingPile.api.dto.PageChargingPileListDTO; import com.ruoyi.chargingPile.api.model.*; import com.ruoyi.chargingPile.api.query.BatchSetAccountingStrategy; import com.ruoyi.chargingPile.api.query.PageChargingPileList; import com.ruoyi.chargingPile.api.vo.TChargingPileVO; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.redis.service.RedisService; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.integration.api.feignClient.*; import com.ruoyi.integration.api.model.QrCodeDelivery; import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData; import com.ruoyi.integration.api.vo.AddDevice; import com.ruoyi.integration.api.vo.AddDeviceResp; import com.ruoyi.integration.api.vo.DeleteDeviceResp; import com.ruoyi.integration.api.vo.ShowDeviceResp; import com.ruoyi.jianguan.mapper.TChargingPileMapper; import com.ruoyi.jianguan.service.*; import com.ruoyi.order.api.feignClient.ChargingOrderAccountingStrategyClient; import com.ruoyi.order.api.feignClient.ChargingOrderClient; import com.ruoyi.order.api.model.TChargingOrder; import com.ruoyi.other.api.feignClient.RoleSiteClient; import com.ruoyi.other.api.feignClient.UserSiteClient; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysUserClient; import com.ruoyi.system.api.feignClient.SysUserRoleClient; import com.ruoyi.system.api.model.SysUserRoleVo; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.math.BigDecimal; import java.math.MathContext; import java.math.RoundingMode; import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; /** * <p> * 充电桩 服务实现类 * </p> * * @author xiaochen * @since 2024-08-06 */ @Service public class TChargingPileServiceImpl extends ServiceImpl<TChargingPileMapper, TChargingPile> implements TChargingPileService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TCompanyServiceImpl.java
New file @@ -0,0 +1,20 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.jianguan.mapper.TCompanyMapper; import com.ruoyi.jianguan.service.TCompanyService; import com.ruoyi.other.api.domain.TCompany; import org.springframework.stereotype.Service; /** * <p> * 服务实现类 * </p> * * @author 无关风月 * @since 2024-08-06 */ @Service public class TCompanyServiceImpl extends ServiceImpl<TCompanyMapper, TCompany> implements TCompanyService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TCouponServiceImpl.java
New file @@ -0,0 +1,27 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.api.feignClient.AppCouponClient; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.jianguan.mapper.TCouponMapper; import com.ruoyi.jianguan.service.TCouponService; import com.ruoyi.other.api.domain.TCoupon; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import java.util.List; /** * <p> * 服务实现类 * </p> * * @author 无关风月 * @since 2024-08-06 */ @Service public class TCouponServiceImpl extends ServiceImpl<TCouponMapper, TCoupon> implements TCouponService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TEnterpriseUserApplicationServiceImpl.java
New file @@ -0,0 +1,20 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.jianguan.mapper.TEnterpriseUserApplicationMapper; import com.ruoyi.jianguan.service.TEnterpriseUserApplicationService; import com.ruoyi.other.api.domain.TEnterpriseUserApplication; import org.springframework.stereotype.Service; /** * <p> * 服务实现类 * </p> * * @author 无关风月 * @since 2024-08-06 */ @Service public class TEnterpriseUserApplicationServiceImpl extends ServiceImpl<TEnterpriseUserApplicationMapper, TEnterpriseUserApplication> implements TEnterpriseUserApplicationService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TEvaluationTagServiceImpl.java
New file @@ -0,0 +1,26 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.core.web.page.BasePage; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.jianguan.mapper.TEvaluationTagMapper; import com.ruoyi.jianguan.service.TEvaluationTagService; import com.ruoyi.other.api.domain.TEvaluationTag; import com.ruoyi.other.api.vo.TEvaluationTagVO; import org.springframework.stereotype.Service; import java.util.List; /** * <p> * 服务实现类 * </p> * * @author 无关风月 * @since 2024-08-06 */ @Service public class TEvaluationTagServiceImpl extends ServiceImpl<TEvaluationTagMapper, TEvaluationTag> implements TEvaluationTagService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TExchangeOrderServiceImpl.java
New file @@ -0,0 +1,42 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.api.feignClient.AppUserAddressClient; import com.ruoyi.account.api.feignClient.AppUserClient; import com.ruoyi.account.api.feignClient.AppUserIntegralChangeClient; import com.ruoyi.account.api.model.TAppUser; import com.ruoyi.account.api.model.TAppUserAddress; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.jianguan.mapper.TExchangeOrderMapper; import com.ruoyi.jianguan.service.TExchangeOrderService; import com.ruoyi.order.api.model.TExchangeOrder; import com.ruoyi.order.api.query.ShoppingOrderQuery; import com.ruoyi.other.api.domain.TCoupon; import com.ruoyi.other.api.domain.TGoods; import com.ruoyi.other.api.feignClient.CouponClient; import com.ruoyi.other.api.feignClient.GoodsClient; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import javax.annotation.Resource; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * <p> * 服务实现类 * </p> * * @author xiaochen * @since 2024-08-07 */ @Service public class TExchangeOrderServiceImpl extends ServiceImpl<TExchangeOrderMapper, TExchangeOrder> implements TExchangeOrderService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TFaultMessageServiceImpl.java
New file @@ -0,0 +1,43 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.api.dto.SendMessageDTO; import com.ruoyi.account.api.feignClient.AppUserClient; import com.ruoyi.chargingPile.api.domain.SiteMenu; import com.ruoyi.chargingPile.api.model.Site; import com.ruoyi.chargingPile.api.model.TChargingPile; import com.ruoyi.chargingPile.api.model.TFaultMessage; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.jianguan.mapper.TFaultMessageMapper; import com.ruoyi.jianguan.service.*; import com.ruoyi.other.api.feignClient.RoleSiteClient; import com.ruoyi.other.api.feignClient.UserSiteClient; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysUserClient; import com.ruoyi.system.api.feignClient.SysUserRoleClient; import com.ruoyi.system.api.model.SysUserRoleVo; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import java.util.Set; /** * <p> * 服务实现类 * </p> * * @author xiaochen * @since 2024-08-08 */ @Slf4j @Service public class TFaultMessageServiceImpl extends ServiceImpl<TFaultMessageMapper, TFaultMessage> implements TFaultMessageService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TGoodsServiceImpl.java
New file @@ -0,0 +1,29 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.core.dto.AppGoodQuery; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.jianguan.mapper.TGoodsMapper; import com.ruoyi.jianguan.service.TGoodsService; import com.ruoyi.order.api.feignClient.OrderClient; import com.ruoyi.other.api.domain.TGoods; import com.ruoyi.other.api.dto.GoodsDTO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import java.util.List; /** * <p> * 服务实现类 * </p> * * @author 无关风月 * @since 2024-08-06 */ @Service public class TGoodsServiceImpl extends ServiceImpl<TGoodsMapper, TGoods> implements TGoodsService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TGrantVipServiceImpl.java
New file @@ -0,0 +1,20 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.jianguan.mapper.TGrantVipMapper; import com.ruoyi.jianguan.service.TGrantVipService; import com.ruoyi.order.api.model.TGrantVip; import org.springframework.stereotype.Service; /** * <p> * 服务实现类 * </p> * * @author xiaochen * @since 2024-08-07 */ @Service public class TGrantVipServiceImpl extends ServiceImpl<TGrantVipMapper, TGrantVip> implements TGrantVipService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/THtmlServiceImpl.java
New file @@ -0,0 +1,20 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.jianguan.mapper.THtmlMapper; import com.ruoyi.jianguan.service.THtmlService; import com.ruoyi.other.api.domain.THtml; import org.springframework.stereotype.Service; /** * <p> * 服务实现类 * </p> * * @author 无关风月 * @since 2024-08-06 */ @Service public class THtmlServiceImpl extends ServiceImpl<THtmlMapper, THtml> implements THtmlService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TIntegralRuleServiceImpl.java
New file @@ -0,0 +1,20 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.jianguan.mapper.TIntegralRuleMapper; import com.ruoyi.jianguan.service.TIntegralRuleService; import com.ruoyi.other.api.domain.TIntegralRule; import org.springframework.stereotype.Service; /** * <p> * 服务实现类 * </p> * * @author 无关风月 * @since 2024-08-06 */ @Service public class TIntegralRuleServiceImpl extends ServiceImpl<TIntegralRuleMapper, TIntegralRule> implements TIntegralRuleService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TInviteUserServiceImpl.java
New file @@ -0,0 +1,37 @@ package com.ruoyi.jianguan.service.impl; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.api.feignClient.AppUserVipDetailClient; import com.ruoyi.account.api.model.TAppUser; import com.ruoyi.account.api.model.TAppUserVipDetail; import com.ruoyi.account.api.model.TInviteUser; import com.ruoyi.account.api.vo.GetAppUserVipDetail; import com.ruoyi.common.core.domain.R; import com.ruoyi.jianguan.mapper.TInviteUserMapper; import com.ruoyi.jianguan.service.TAppUserService; import com.ruoyi.jianguan.service.TInviteUserService; import com.ruoyi.other.api.domain.TIntegralRule; import com.ruoyi.other.api.domain.TVip; import com.ruoyi.other.api.feignClient.IntegralRuleClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.time.LocalDateTime; import java.util.Objects; /** * <p> * 服务实现类 * </p> * * @author luodangjia * @since 2024-08-06 */ @Service public class TInviteUserServiceImpl extends ServiceImpl<TInviteUserMapper, TInviteUser> implements TInviteUserService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TInvoiceInformationServiceImpl.java
New file @@ -0,0 +1,20 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.api.model.TInvoiceInformation; import com.ruoyi.jianguan.mapper.TInvoiceInformationMapper; import com.ruoyi.jianguan.service.TInvoiceInformationService; import org.springframework.stereotype.Service; /** * <p> * 服务实现类 * </p> * * @author luodangjia * @since 2024-08-06 */ @Service public class TInvoiceInformationServiceImpl extends ServiceImpl<TInvoiceInformationMapper, TInvoiceInformation> implements TInvoiceInformationService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TInvoiceTypeServiceImpl.java
New file @@ -0,0 +1,25 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.jianguan.mapper.TInvoiceTypeMapper; import com.ruoyi.jianguan.service.TInvoiceTypeService; import com.ruoyi.other.api.domain.TInvoiceType; import org.springframework.stereotype.Service; import java.util.List; /** * <p> * 服务实现类 * </p> * * @author 无关风月 * @since 2024-08-06 */ @Service public class TInvoiceTypeServiceImpl extends ServiceImpl<TInvoiceTypeMapper, TInvoiceType> implements TInvoiceTypeService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TMonitoringEquipmentServiceImpl.java
New file @@ -0,0 +1,33 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.chargingPile.api.domain.SiteMenu; import com.ruoyi.chargingPile.api.model.TMonitoringEquipment; import com.ruoyi.chargingPile.api.query.TMonitoringEquipmentQuery; import com.ruoyi.chargingPile.api.vo.TMonitoringEquipmentVO; import com.ruoyi.chargingPile.api.vo.TParkingLotVO; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.jianguan.mapper.TMonitoringEquipmentMapper; import com.ruoyi.jianguan.service.TMonitoringEquipmentService; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysUserClient; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.util.List; import java.util.stream.Collectors; /** * <p> * 监控 服务实现类 * </p> * * @author xiaochen * @since 2024-08-06 */ @Service public class TMonitoringEquipmentServiceImpl extends ServiceImpl<TMonitoringEquipmentMapper, TMonitoringEquipment> implements TMonitoringEquipmentService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TNoticeServiceImpl.java
New file @@ -0,0 +1,20 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.jianguan.mapper.TNoticeMapper; import com.ruoyi.jianguan.service.TNoticeService; import com.ruoyi.other.api.domain.TNotice; import org.springframework.stereotype.Service; /** * <p> * 服务实现类 * </p> * * @author 无关风月 * @since 2024-08-06 */ @Service public class TNoticeServiceImpl extends ServiceImpl<TNoticeMapper, TNotice> implements TNoticeService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TOrderAppealServiceImpl.java
New file @@ -0,0 +1,39 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.chargingPile.api.feignClient.ChargingGunClient; import com.ruoyi.chargingPile.api.vo.SiteNameVO; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.jianguan.mapper.TOrderAppealMapper; import com.ruoyi.jianguan.service.TOrderAppealService; import com.ruoyi.order.api.model.TChargingOrder; import com.ruoyi.order.api.model.TOrderAppeal; import com.ruoyi.order.api.model.TShoppingOrder; import com.ruoyi.order.api.query.TOrderAppealQuery; import com.ruoyi.order.api.vo.TOrderAppealVO; import com.ruoyi.other.api.domain.TGoods; import com.ruoyi.other.api.feignClient.GoodsClient; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; /** * <p> * 服务实现类 * </p> * * @author xiaochen * @since 2024-08-07 */ @Service public class TOrderAppealServiceImpl extends ServiceImpl<TOrderAppealMapper, TOrderAppeal> implements TOrderAppealService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TOrderEvaluateServiceImpl.java
New file @@ -0,0 +1,53 @@ package com.ruoyi.jianguan.service.impl; import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.api.feignClient.AppUserCarClient; import com.ruoyi.account.api.feignClient.AppUserClient; import com.ruoyi.account.api.feignClient.AppUserIntegralChangeClient; import com.ruoyi.account.api.model.TAppUser; import com.ruoyi.account.api.model.TAppUserCar; import com.ruoyi.account.api.model.TAppUserIntegralChange; import com.ruoyi.chargingPile.api.domain.SiteMenu; import com.ruoyi.chargingPile.api.feignClient.PartnerClient; import com.ruoyi.chargingPile.api.feignClient.SiteClient; import com.ruoyi.chargingPile.api.model.Site; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.jianguan.mapper.TOrderEvaluateMapper; import com.ruoyi.jianguan.service.TOrderEvaluateService; import com.ruoyi.order.api.model.TChargingOrder; import com.ruoyi.order.api.model.TOrderEvaluate; import com.ruoyi.order.api.model.TOrderEvaluateTag; import com.ruoyi.order.api.query.TOrderEvaluateQuery; import com.ruoyi.order.api.vo.SiteDetailEvaluateVO; import com.ruoyi.order.api.vo.TOrderEvaluateVO; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; /** * <p> * 服务实现类 * </p> * * @author xiaochen * @since 2024-08-07 */ @Service public class TOrderEvaluateServiceImpl extends ServiceImpl<TOrderEvaluateMapper, TOrderEvaluate> implements TOrderEvaluateService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TOrderEvaluateTagServiceImpl.java
New file @@ -0,0 +1,20 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.jianguan.mapper.TOrderEvaluateTagMapper; import com.ruoyi.jianguan.service.TOrderEvaluateTagService; import com.ruoyi.order.api.model.TOrderEvaluateTag; import org.springframework.stereotype.Service; /** * <p> * 服务实现类 * </p> * * @author xiaochen * @since 2024-08-07 */ @Service public class TOrderEvaluateTagServiceImpl extends ServiceImpl<TOrderEvaluateTagMapper, TOrderEvaluateTag> implements TOrderEvaluateTagService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TOrderInvoiceDetailServiceImpl.java
New file @@ -0,0 +1,20 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.jianguan.mapper.TOrderInvoiceDetailMapper; import com.ruoyi.jianguan.service.TOrderInvoiceDetailService; import com.ruoyi.order.api.model.TOrderInvoiceDetail; import org.springframework.stereotype.Service; /** * <p> * 服务实现类 * </p> * * @author xiaochen * @since 2024-08-07 */ @Service public class TOrderInvoiceDetailServiceImpl extends ServiceImpl<TOrderInvoiceDetailMapper, TOrderInvoiceDetail> implements TOrderInvoiceDetailService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TOrderInvoiceServiceImpl.java
New file @@ -0,0 +1,50 @@ package com.ruoyi.jianguan.service.impl; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.api.feignClient.AppUserClient; import com.ruoyi.account.api.model.TAppUser; import com.ruoyi.chargingPile.api.feignClient.ChargingGunClient; import com.ruoyi.chargingPile.api.feignClient.SiteClient; import com.ruoyi.chargingPile.api.model.Site; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.jianguan.mapper.TOrderInvoiceMapper; import com.ruoyi.jianguan.service.*; import com.ruoyi.order.api.model.*; import com.ruoyi.order.api.query.TOrderInvoiceQuery; import com.ruoyi.order.api.vo.TOrderInvoiceVO; import com.ruoyi.other.api.domain.TCoupon; import com.ruoyi.other.api.domain.TGoods; import com.ruoyi.other.api.domain.TInvoiceType; import com.ruoyi.other.api.feignClient.CouponClient; import com.ruoyi.other.api.feignClient.GoodsClient; import com.ruoyi.other.api.feignClient.InvoiceTypeClient; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; /** * <p> * 服务实现类 * </p> * * @author xiaochen * @since 2024-08-07 */ @Service public class TOrderInvoiceServiceImpl extends ServiceImpl<TOrderInvoiceMapper, TOrderInvoice> implements TOrderInvoiceService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TParkingLotServiceImpl.java
New file @@ -0,0 +1,37 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.chargingPile.api.domain.SiteMenu; import com.ruoyi.chargingPile.api.model.TParkingLot; import com.ruoyi.chargingPile.api.query.TParkingLotQuery; import com.ruoyi.chargingPile.api.vo.TParkingLotVO; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.jianguan.mapper.TParkingLotMapper; import com.ruoyi.jianguan.service.TParkingLotService; import com.ruoyi.other.api.feignClient.RoleSiteClient; import com.ruoyi.other.api.feignClient.UserSiteClient; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysUserClient; import com.ruoyi.system.api.feignClient.SysUserRoleClient; import com.ruoyi.system.api.model.SysUserRoleVo; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.HashSet; import java.util.List; import java.util.Set; /** * <p> * 停车场 服务实现类 * </p> * * @author xiaochen * @since 2024-08-06 */ @Service public class TParkingLotServiceImpl extends ServiceImpl<TParkingLotMapper, TParkingLot> implements TParkingLotService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TParkingRecordServiceImpl.java
New file @@ -0,0 +1,43 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.chargingPile.api.dto.GetSiteListDTO; import com.ruoyi.chargingPile.api.feignClient.SiteClient; 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.TParkingRecordPageInfoVO; import com.ruoyi.chargingPile.api.vo.TParkingRecordVO; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.jianguan.mapper.SiteMapper; import com.ruoyi.jianguan.mapper.TParkingLotMapper; import com.ruoyi.jianguan.mapper.TParkingRecordMapper; import com.ruoyi.jianguan.service.TParkingRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.stream.Collectors; /** * <p> * 服务实现类 * </p> * * @author xiaochen * @since 2024-08-08 */ @Service public class TParkingRecordServiceImpl extends ServiceImpl<TParkingRecordMapper, TParkingRecord> implements TParkingRecordService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TPartnerSiteServiceImpl.java
New file @@ -0,0 +1,20 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.chargingPile.api.model.TPartnerSite; import com.ruoyi.jianguan.mapper.TPartnerSiteMapper; import com.ruoyi.jianguan.service.TPartnerSiteService; import org.springframework.stereotype.Service; /** * <p> * 服务实现类 * </p> * * @author xiaochen * @since 2024-08-08 */ @Service public class TPartnerSiteServiceImpl extends ServiceImpl<TPartnerSiteMapper, TPartnerSite> implements TPartnerSiteService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TRepairServiceImpl.java
New file @@ -0,0 +1,43 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.api.dto.SendMessageDTO; import com.ruoyi.account.api.feignClient.AppUserClient; import com.ruoyi.chargingPile.api.domain.SiteMenu; import com.ruoyi.chargingPile.api.model.Site; import com.ruoyi.chargingPile.api.model.TChargingPile; import com.ruoyi.chargingPile.api.model.TRepair; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.jianguan.mapper.TRepairMapper; import com.ruoyi.jianguan.service.*; import com.ruoyi.other.api.feignClient.RoleSiteClient; import com.ruoyi.other.api.feignClient.UserSiteClient; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysUserClient; import com.ruoyi.system.api.feignClient.SysUserRoleClient; import com.ruoyi.system.api.model.SysUserRoleVo; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import java.util.Set; /** * <p> * 服务实现类 * </p> * * @author xiaochen * @since 2024-08-08 */ @Slf4j @Service public class TRepairServiceImpl extends ServiceImpl<TRepairMapper, TRepair> implements TRepairService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TRoleSiteServiceImpl.java
New file @@ -0,0 +1,20 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.jianguan.mapper.TRoleSiteMapper; import com.ruoyi.jianguan.service.TRoleSiteService; import com.ruoyi.other.api.domain.TRoleSite; import org.springframework.stereotype.Service; /** * <p> * 服务实现类 * </p> * * @author 无关风月 * @since 2024-08-06 */ @Service public class TRoleSiteServiceImpl extends ServiceImpl<TRoleSiteMapper, TRoleSite> implements TRoleSiteService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TSettlementConfirmServiceImpl.java
New file @@ -0,0 +1,20 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.jianguan.mapper.TSettlementConfirmMapper; import com.ruoyi.jianguan.service.TSettlementConfirmService; import com.ruoyi.order.api.model.TSettlementConfirm; import org.springframework.stereotype.Service; /** * <p> * 服务实现类 * </p> * * @author xiaochen * @since 2024-08-07 */ @Service public class TSettlementConfirmServiceImpl extends ServiceImpl<TSettlementConfirmMapper, TSettlementConfirm> implements TSettlementConfirmService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TShoppingOrderRefundServiceImpl.java
New file @@ -0,0 +1,15 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.jianguan.mapper.TShoppingOrderRefundMapper; import com.ruoyi.jianguan.service.TShoppingOrderRefundService; import com.ruoyi.order.api.model.TShoppingOrderRefund; import org.springframework.stereotype.Service; /** * @author zhibing.pu * @date 2024/8/28 15:16 */ @Service public class TShoppingOrderRefundServiceImpl extends ServiceImpl<TShoppingOrderRefundMapper, TShoppingOrderRefund> implements TShoppingOrderRefundService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TShoppingOrderServiceImpl.java
New file @@ -0,0 +1,59 @@ package com.ruoyi.jianguan.service.impl; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.api.dto.GrantCouponDto; import com.ruoyi.account.api.feignClient.AppCouponClient; import com.ruoyi.account.api.feignClient.AppUserAddressClient; import com.ruoyi.account.api.feignClient.AppUserClient; import com.ruoyi.account.api.model.TAppUser; import com.ruoyi.account.api.model.TAppUserAddress; 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.service.TokenService; import com.ruoyi.jianguan.mapper.TShoppingOrderMapper; import com.ruoyi.jianguan.service.TShoppingOrderRefundService; import com.ruoyi.jianguan.service.TShoppingOrderService; import com.ruoyi.order.api.model.TShoppingOrder; import com.ruoyi.order.api.model.TShoppingOrderRefund; import com.ruoyi.order.api.query.ShoppingOrderQuery; import com.ruoyi.order.api.query.TActivityStatisticsQuery; import com.ruoyi.order.api.vo.TActivityStatisticslVO; import com.ruoyi.order.api.vo.TActivityVO; import com.ruoyi.other.api.domain.TCoupon; import com.ruoyi.other.api.domain.TGoods; import com.ruoyi.other.api.feignClient.CouponClient; import com.ruoyi.other.api.feignClient.GoodsClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import javax.annotation.Resource; import java.math.BigDecimal; import java.math.RoundingMode; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; /** * <p> * 服务实现类 * </p> * * @author xiaochen * @since 2024-08-07 */ @Service public class TShoppingOrderServiceImpl extends ServiceImpl<TShoppingOrderMapper, TShoppingOrder> implements TShoppingOrderService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TSiteMenuServiceImpl.java
New file @@ -0,0 +1,20 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.chargingPile.api.model.TSiteMenu; import com.ruoyi.jianguan.mapper.TSiteMenuMapper; import com.ruoyi.jianguan.service.TSiteMenuService; import org.springframework.stereotype.Service; /** * <p> * 服务实现类 * </p> * * @author xiaochen * @since 2024-08-08 */ @Service public class TSiteMenuServiceImpl extends ServiceImpl<TSiteMenuMapper, TSiteMenu> implements TSiteMenuService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TSystemConfigurationServiceImpl.java
New file @@ -0,0 +1,20 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.jianguan.mapper.TSystemConfigurationMapper; import com.ruoyi.jianguan.service.TSystemConfigurationService; import com.ruoyi.other.api.domain.TSystemConfiguration; import org.springframework.stereotype.Service; /** * <p> * 服务实现类 * </p> * * @author 无关风月 * @since 2024-08-06 */ @Service public class TSystemConfigurationServiceImpl extends ServiceImpl<TSystemConfigurationMapper, TSystemConfiguration> implements TSystemConfigurationService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TUserSiteServiceImpl.java
New file @@ -0,0 +1,20 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.jianguan.mapper.TUserSiteMapper; import com.ruoyi.jianguan.service.TUserSiteService; import com.ruoyi.other.api.domain.TUserSite; import org.springframework.stereotype.Service; /** * <p> * 服务实现类 * </p> * * @author 无关风月 * @since 2024-08-06 */ @Service public class TUserSiteServiceImpl extends ServiceImpl<TUserSiteMapper, TUserSite> implements TUserSiteService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TUserTagServiceImpl.java
New file @@ -0,0 +1,20 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.jianguan.mapper.TUserTagMapper; import com.ruoyi.jianguan.service.TUserTagService; import com.ruoyi.other.api.domain.TUserTag; import org.springframework.stereotype.Service; /** * <p> * 服务实现类 * </p> * * @author 无关风月 * @since 2024-08-06 */ @Service public class TUserTagServiceImpl extends ServiceImpl<TUserTagMapper, TUserTag> implements TUserTagService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TVehicleRampServiceImpl.java
New file @@ -0,0 +1,20 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.chargingPile.api.model.TVehicleRamp; import com.ruoyi.jianguan.mapper.TVehicleRampMapper; import com.ruoyi.jianguan.service.TVehicleRampService; import org.springframework.stereotype.Service; /** * <p> * 车道 服务实现类 * </p> * * @author xiaochen * @since 2024-08-06 */ @Service public class TVehicleRampServiceImpl extends ServiceImpl<TVehicleRampMapper, TVehicleRamp> implements TVehicleRampService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TVipOrderRefundServiceImpl.java
New file @@ -0,0 +1,15 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.jianguan.mapper.TVipOrderRefundMapper; import com.ruoyi.jianguan.service.TVipOrderRefundService; import com.ruoyi.order.api.model.TVipOrderRefund; import org.springframework.stereotype.Service; /** * @author zhibing.pu * @date 2024/8/28 15:19 */ @Service public class TVipOrderRefundServiceImpl extends ServiceImpl<TVipOrderRefundMapper, TVipOrderRefund> implements TVipOrderRefundService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TVipOrderServiceImpl.java
New file @@ -0,0 +1,35 @@ package com.ruoyi.jianguan.service.impl; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.api.dto.GiveVipDto; import com.ruoyi.account.api.feignClient.AppUserClient; import com.ruoyi.account.api.model.TAppUser; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.jianguan.mapper.TVipOrderMapper; import com.ruoyi.jianguan.service.TVipOrderService; import com.ruoyi.order.api.model.TVipOrder; import com.ruoyi.order.api.query.VipShoppingOrderQuery; 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 TVipOrderServiceImpl extends ServiceImpl<TVipOrderMapper, TVipOrder> implements TVipOrderService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/service/impl/TVipServiceImpl.java
New file @@ -0,0 +1,41 @@ package com.ruoyi.jianguan.service.impl; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.api.feignClient.AppUserClient; import com.ruoyi.account.api.model.TAppUser; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.OrderCodeUtil; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.jianguan.mapper.TCouponMapper; import com.ruoyi.jianguan.mapper.TVipMapper; import com.ruoyi.jianguan.service.TVipService; import com.ruoyi.order.api.feignClient.OrderClient; import com.ruoyi.order.api.model.TVipOrder; import com.ruoyi.other.api.domain.TCoupon; import com.ruoyi.other.api.domain.TVip; import com.ruoyi.other.api.feignClient.VipClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import javax.annotation.Resource; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; /** * <p> * 服务实现类 * </p> * * @author 无关风月 * @since 2024-08-06 */ @Service public class TVipServiceImpl extends ServiceImpl<TVipMapper, TVip> implements TVipService { } ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/util/GovernmentCloudTask.java
New file @@ -0,0 +1,273 @@ package com.ruoyi.jianguan.util; import com.ruoyi.jianguan.service.*; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.time.LocalDateTime; /** * @author zhibing.pu * @date 2023/7/11 8:39 */ @Component public class GovernmentCloudTask { @Resource private AccountingStrategyDetailOrderService accountingStrategyDetailOrderService; @Resource private AccountingStrategyOrderService accountingStrategyOrderService; @Resource private GenTableColumnService genTableColumnService; @Resource private GenTableService genTableService; @Resource private IPartnerService partnerService; @Resource private IRegionService regionService; @Resource private ISiteService siteService; @Resource private ISysConfigService sysConfigService; @Resource private ISysDeptService deptService; @Resource private ISysDictDataService sysDictDataService; @Resource private ISysDictTypeService sysDictTypeService; @Resource private ISysLoginLogService sysLoginLogService; @Resource private ISysMenuService sysMenuService; @Resource private ISysNoticeService sysNoticeService; @Resource private ISysOperLogService sysOperLogService; @Resource private ISysPermissionService sysPermissionService; @Resource private ISysPostService sysPostService; @Resource private ISysRoleService sysRoleService; @Resource private ISysUserOnlineService sysUserOnlineService; @Resource private ISysUserRoleService sysUserRoleService; @Resource private ISysUserService sysUserService; @Resource private OperatorService operatorService; @Resource private TAccountingStrategyDetailService accountingStrategyDetailService; @Resource private TAccountingStrategyService accountingStrategyService; @Resource private TActivityService activityService; @Resource private TAdvertisingService advertisingService; @Resource private TAppCouponService appCouponService; @Resource private TApplyChargingPileService applyChargingPileService; @Resource private TAppUserAddressService appUserAddressService; @Resource private TAppUserCarService appUserCarService; @Resource private TAppUserIntegralChangeService appUserIntegralChangeService; @Resource private TAppUserService appUserService; @Resource private TAppUserSignService appUserSignService; @Resource private TAppUserTagService appUserTagService; @Resource private TAppUserVipDetailService appUserVipDetailService; @Resource private TCarportService carportService; @Resource private TChargingBillService chargingBillService; @Resource private TChargingGunService chargingGunService; @Resource private TChargingOrderAccountingStrategyService chargingOrderAccountingStrategyService; @Resource private TChargingOrderRefundService chargingOrderRefundService; @Resource private TChargingOrderService chargingOrderService; @Resource private TChargingPileNotificationService chargingPileNotificationService; @Resource private TChargingPileService chargingPileService; @Resource private TCompanyService companyService; @Resource private TCouponService couponService; @Resource private TEnterpriseUserApplicationService enterpriseUserApplicationService; @Resource private TEvaluationTagService evaluationTagService; @Resource private TExchangeOrderService exchangeOrderService; @Resource private TFaultMessageService faultMessageService; @Resource private TGoodsService goodsService; @Resource private TGrantVipService grantVipService; @Resource private THtmlService htmlService; @Resource private TIntegralRuleService integralRuleService; @Resource private TInviteUserService inviteUserService; @Resource private TInvoiceInformationService tInvoiceInformationService; @Resource private TInvoiceTypeService invoiceTypeService; @Resource private TMonitoringEquipmentService monitoringEquipmentService; @Resource private TNoticeService noticeService; @Resource private TOrderAppealService orderAppealService; @Resource private TOrderEvaluateService orderEvaluateService; @Resource private TOrderEvaluateTagService orderEvaluateTagService; @Resource private TOrderInvoiceDetailService orderInvoiceDetailService; @Resource private TOrderInvoiceService orderInvoiceService; @Resource private TParkingLotService parkingLotService; @Resource private TParkingRecordService parkingRecordService; @Resource private TPartnerSiteService partnerSiteService; @Resource private TRepairService repairService; @Resource private TRoleSiteService roleSiteService; @Resource private TSettlementConfirmService settlementConfirmService; @Resource private TShoppingOrderRefundService shoppingOrderRefundService; @Resource private TShoppingOrderService shoppingOrderService; @Resource private TSiteMenuService siteMenuService; @Resource private TSystemConfigurationService systemConfigurationService; @Resource private TUserSiteService userSiteService; @Resource private TUserTagService userTagService; @Resource private TVehicleRampService vehicleRampService; @Resource private TVipOrderRefundService vipOrderRefundService; @Resource private TVipOrderService vipOrderService; @Resource private TVipService vipService; // 每天早上9点执行的定时任务 @Scheduled(cron = "0 0 9 * * ?") public void taskMonth() { LocalDateTime start = LocalDateTime.now(); LocalDateTime end = LocalDateTime.now().minusDays(1); // accountingStrategyDetailOrderService // accountingStrategyOrderService // genTableColumnService // genTableService // partnerService // regionService // siteService // sysConfigService // deptService // sysDictDataService // sysDictTypeService // sysLoginLogService // sysMenuService // sysNoticeService // sysOperLogService // sysPermissionService // sysPostService // sysRoleService // sysUserOnlineService // sysUserRoleService // sysUserService // operatorService // accountingStrategyDetailService // accountingStrategyService // activityService // advertisingService // appCouponService // applyChargingPileService // appUserAddressService // appUserCarService // appUserIntegralChangeService // appUserService // appUserSignService // appUserTagService // appUserVipDetailService // carportService // chargingBillService // chargingGunService // chargingOrderAccountingStrategyService // chargingOrderRefundService // chargingOrderService // chargingPileNotificationService // chargingPileService // companyService // couponService // enterpriseUserApplicationService // evaluationTagService // exchangeOrderService // faultMessageService // goodsService // grantVipService // htmlService // integralRuleService // inviteUserService // tInvoiceInformationService // invoiceTypeService // monitoringEquipmentService // noticeService // orderAppealService // orderEvaluateService // orderEvaluateTagService // orderInvoiceDetailService // orderInvoiceService // parkingLotService // parkingRecordService // partnerSiteService // repairService // roleSiteService // settlementConfirmService // shoppingOrderRefundService // shoppingOrderService // siteMenuService // systemConfigurationService // userSiteService // userTagService // vehicleRampService // vipOrderRefundService // vipOrderService // vipService } } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
@@ -2332,6 +2332,15 @@ return chargingOrderService.getNotPaymentChargingOrder(); } /** * 手动推送订单给三方平台 * @param code * @return */ @PostMapping("/pushOrderInfo") public R pushOrderInfo(@RequestParam String code){ return chargingOrderService.pushOrderInfo(code); } } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java
@@ -310,4 +310,13 @@ * @return */ R getNotPaymentChargingOrder(); /** * * 手动推送订单给第三方平台 * @param code * @return */ R pushOrderInfo(String code); } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -697,15 +697,15 @@ log.info(chargingOrder.getCode() + ":-------------------远程调起开始充电请求-------------------" + platformStartCharging.toString()); sendMessageClient.platformStartCharging(platformStartCharging); //异步线程检测远程启动的应答结果。如果失败,则需要全额退款 Long id = chargingOrder.getId(); //执行5分钟的定时任务检测 ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); scheduler.scheduleAtFixedRate(()->{ if(timingDetection(id)){ scheduler.shutdown(); } }, 5, 1, TimeUnit.SECONDS); // //异步线程检测远程启动的应答结果。如果失败,则需要全额退款 // Long id = chargingOrder.getId(); // //执行5分钟的定时任务检测 // ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); // scheduler.scheduleAtFixedRate(()->{ // if(timingDetection(id)){ // scheduler.shutdown(); // } // }, 5, 1, TimeUnit.SECONDS); return AjaxResult.success(); } @@ -3890,15 +3890,15 @@ platformStartCharging.setAccount_balance(rechargeAmount); log.info(chargingOrder.getCode() + ":-------------------远程调起开始充电请求-------------------" + platformStartCharging.toString()); sendMessageClient.platformStartCharging(platformStartCharging); //异步线程检测远程启动的应答结果。如果失败,则需要全额退款 Long id = chargingOrder.getId(); //执行5分钟的定时任务检测 ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); scheduler.scheduleAtFixedRate(()->{ if(timingDetection(id)){ scheduler.shutdown(); } }, 5, 1, TimeUnit.SECONDS); // //异步线程检测远程启动的应答结果。如果失败,则需要全额退款 // Long id = chargingOrder.getId(); // //执行5分钟的定时任务检测 // ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); // scheduler.scheduleAtFixedRate(()->{ // if(timingDetection(id)){ // scheduler.shutdown(); // } // }, 5, 1, TimeUnit.SECONDS); //推送三方平台订单状态 tcecClient.notificationEquipChargeStatus(chargingOrder.getStartChargeSeq(), chargingOrder.getOperatorId()); @@ -3967,4 +3967,21 @@ } return R.ok(mapList); } /** * * 手动推送订单给第三方平台 * @param code * @return */ @Override public R pushOrderInfo(String code) { TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, code)); tcecClient.notificationEquipChargeStatus(chargingOrder.getStartChargeSeq(), chargingOrder.getOperatorId()); tcecClient.notificationStopChargeResult(chargingOrder.getStartChargeSeq(), chargingOrder.getChargingGunId().toString(), chargingOrder.getOperatorId()); tcecClient.notificationChargeOrderInfo(chargingOrder.getStartChargeSeq(), chargingOrder.getOperatorId()); return R.ok(); } }