From c7372ea9e06ba1a2df85bbff1fe4d38a45693de8 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期二, 03 九月 2024 17:55:18 +0800 Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile --- ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/enums/ServiceIdMenu.java | 8 +- ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyServiceImpl.java | 16 ++++ ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/EndChargeMessageListener.java | 88 ++++++++++++++++++++++ ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/constant/SendTagConstant.java | 4 + ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/controller/SendMessageController.java | 8 +- ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/produce/EnhanceProduce.java | 11 ++ ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/IntegrationClient.java | 4 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/IntegrationFallbackFactory.java | 8 +- ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/model/EndChargeMessage.java | 29 +++++++ ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java | 3 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/tools/MessageUtil.java | 8 +- ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TAccountingStrategyMapper.xml | 1 12 files changed, 170 insertions(+), 18 deletions(-) diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/IntegrationFallbackFactory.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/IntegrationFallbackFactory.java index 195a34c..87a7d65 100644 --- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/IntegrationFallbackFactory.java +++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/IntegrationFallbackFactory.java @@ -48,10 +48,10 @@ return R.fail("读取实时监测数据调用失败:" + throwable.getMessage()); } - @Override - public R<String> endCharge(EndCharge endCharge) { - return R.fail("充电结束调用失败:" + throwable.getMessage()); - } +// @Override +// public R<String> endCharge(EndCharge endCharge) { +// return R.fail("充电结束调用失败:" + throwable.getMessage()); +// } @Override public R<String> platformConfirmationCharging(PlatformConfirmationCharging platformConfirmationCharging) { diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/IntegrationClient.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/IntegrationClient.java index f8255a7..a6f1d64 100644 --- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/IntegrationClient.java +++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/IntegrationClient.java @@ -61,8 +61,8 @@ * @param endCharge 实体对象 * @return */ - @PostMapping("/sendMessage/sendMessageendCharge") - public R<String> endCharge(@RequestBody EndCharge endCharge); +// @PostMapping("/sendMessage/sendMessageendCharge") +// public R<String> endCharge(@RequestBody EndCharge endCharge); /** * 运营平台确认启动充电 diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyServiceImpl.java index 2b2bbd5..ad0bc26 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyServiceImpl.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyServiceImpl.java @@ -1,5 +1,6 @@ package com.ruoyi.chargingPile.service.impl; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.chargingPile.api.model.TAccountingStrategy; import com.ruoyi.chargingPile.api.query.TAccountingStrategyQuery; @@ -12,9 +13,13 @@ 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.Arrays; +import java.util.Comparator; import java.util.List; +import java.util.stream.Collectors; /** * <p> @@ -33,6 +38,10 @@ public PageInfo<TAccountingStrategyVO> pageList(TAccountingStrategyQuery query) { PageInfo<TAccountingStrategyVO> pageInfo = new PageInfo<>(query.getPageCurr(),query.getPageSize()); List<TAccountingStrategyVO> list = this.baseMapper.pageList(query,pageInfo); + List<Integer> parentIds = list.stream().map(TAccountingStrategyVO::getId).collect(Collectors.toList()); + List<TAccountingStrategy> list1 = this.list(Wrappers.lambdaQuery(TAccountingStrategy.class) + .in(TAccountingStrategy::getParentId, parentIds) + .in(TAccountingStrategy::getAuditStatus, Arrays.asList(1,2))); for (TAccountingStrategyVO tAccountingStrategyVO : list) { SysUser data = sysUserClient.getSysUser(tAccountingStrategyVO.getUserId()).getData(); tAccountingStrategyVO.setUserName(data.getNickName()); @@ -44,6 +53,13 @@ SysUser two = sysUserClient.getSysUser(tAccountingStrategyVO.getUserId()).getData(); tAccountingStrategyVO.setTwoUserName(two==null?null:two.getNickName()); } + // 匹配编辑后的未审核的 + List<TAccountingStrategy> accountingStrategies = list1.stream().filter(e -> e.getParentId().equals(tAccountingStrategyVO.getId())) + .sorted(Comparator.comparing(TAccountingStrategy::getCreateTime).reversed()).collect(Collectors.toList()); + if(!CollectionUtils.isEmpty(accountingStrategies)){ + TAccountingStrategy tAccountingStrategy = accountingStrategies.get(0); + tAccountingStrategyVO.setAuditStatus(tAccountingStrategy.getAuditStatus()); + } } pageInfo.setRecords(list); return pageInfo; diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TAccountingStrategyMapper.xml b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TAccountingStrategyMapper.xml index 521ac63..e218c2a 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TAccountingStrategyMapper.xml +++ b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TAccountingStrategyMapper.xml @@ -37,6 +37,7 @@ AND audit_status = #{query.auditStatus} </if> AND site_id IS NULL + AND (parent_id IS NULL OR audit_status = 3 OR audit_status = 4) AND del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()} </where> ORDER BY create_time DESC diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/constant/SendTagConstant.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/constant/SendTagConstant.java index 9088d1e..8708f9f 100644 --- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/constant/SendTagConstant.java +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/constant/SendTagConstant.java @@ -15,6 +15,10 @@ */ public static final String PING ="ping"; /** + * 充电结束 + */ + public static final String END_CHARGE = "end_charge"; + /** * 计费模型验证请求 */ public static final String BILLING_MODE_VERIFY ="billing_mode_verify"; diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/controller/SendMessageController.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/controller/SendMessageController.java index 2857dfc..1dde7c6 100644 --- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/controller/SendMessageController.java +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/controller/SendMessageController.java @@ -76,10 +76,10 @@ * @param endCharge 实体对象 * @return */ - @PostMapping("/endCharge") - public String endCharge(@RequestBody EndCharge endCharge){ - return iotMessageProduce.sendMessage(endCharge.getCharging_pile_code(), ServiceIdMenu.END_CHARGE.getKey(),messageUtil.endCharge(endCharge)); - } +// @PostMapping("/endCharge") +// public String endCharge(@RequestBody EndCharge endCharge){ +// return iotMessageProduce.sendMessage(endCharge.getCharging_pile_code(), ServiceIdMenu.END_CHARGE.getKey(),messageUtil.endCharge(endCharge)); +// } /** * 运营平台确认启动充电 diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/enums/ServiceIdMenu.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/enums/ServiceIdMenu.java index 2445ebf..6acaba3 100644 --- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/enums/ServiceIdMenu.java +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/enums/ServiceIdMenu.java @@ -26,10 +26,10 @@ * 读取实时监测数据 */ READ_REAL_TIME_MONITORING_DATA ("读取实时监测数据","read_real_time_monitoring_data"), - /** - * 充电结束 - */ - END_CHARGE ("充电结束","end_charge"), +// /** +// * 充电结束 +// */ +// END_CHARGE ("充电结束","end_charge"), /** * 运营平台确认启动充电 */ diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java index 3640b42..3883fad 100644 --- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java @@ -44,6 +44,9 @@ case SendTagConstant.PING: sendResult = enhanceProduce.pingMessage(content); break; + case SendTagConstant.END_CHARGE: + sendResult = enhanceProduce.endChargeMessage(content); + break; case SendTagConstant.BILLING_MODE_VERIFY: sendResult = enhanceProduce.billingModeVerifyMessage(content); break; diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/tools/MessageUtil.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/tools/MessageUtil.java index 7610a47..ff62d42 100644 --- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/tools/MessageUtil.java +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/tools/MessageUtil.java @@ -109,10 +109,10 @@ * @param endCharge 实体对象 * @return */ - public String endCharge(EndCharge endCharge){ - endChargeService.create(endCharge); - return getMessageJsonString(endCharge, ServiceIdMenu.END_CHARGE.getValue()); - } +// public String endCharge(EndCharge endCharge){ +// endChargeService.create(endCharge); +// return getMessageJsonString(endCharge, ServiceIdMenu.END_CHARGE.getValue()); +// } /** * 运营平台确认启动充电 diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/EndChargeMessageListener.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/EndChargeMessageListener.java new file mode 100644 index 0000000..c6a325b --- /dev/null +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/EndChargeMessageListener.java @@ -0,0 +1,88 @@ +package com.ruoyi.integration.rocket.listener; + +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.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.EndChargeMessage; +import com.ruoyi.integration.rocket.model.PingMessage; +import com.ruoyi.integration.rocket.util.EnhanceMessageHandler; +import lombok.extern.slf4j.Slf4j; +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; + +@Slf4j +@Component +@RocketMQMessageListener( + consumerGroup = "enhance_consumer_group", + topic = "rocket_enhance", + selectorExpression = "*", + consumeThreadMax = 5 //默认是64个线程并发消息,配置 consumeThreadMax 参数指定并发消费线程数,避免太大导致资源不够 +) +public class EndChargeMessageListener extends EnhanceMessageHandler<EndChargeMessage> implements RocketMQListener<EndChargeMessage> { + + @Autowired + private EndChargeService endChargeService; + @Autowired + private MessageUtil messageUtil; + @Autowired + private IotMessageProduce iotMessageProduce; + @Override + protected void handleMessage(EndChargeMessage message) throws Exception { + // 此时这里才是最终的业务处理,代码只需要处理资源类关闭异常,其他的可以交给父类重试 + log.info("充电结束-业务消息处理:{}",message); + // 持久化消息 + EndCharge endCharge = new EndCharge(); + BeanUtils.copyProperties(message,endCharge); + endChargeService.create(endCharge); + // 业务处理 + } + + @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); + } +} \ No newline at end of file diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/model/EndChargeMessage.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/model/EndChargeMessage.java new file mode 100644 index 0000000..4cfaafa --- /dev/null +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/model/EndChargeMessage.java @@ -0,0 +1,29 @@ +package com.ruoyi.integration.rocket.model; + +import com.ruoyi.integration.rocket.base.BaseMessage; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * 充电结束 + **/ + +@Data +public class EndChargeMessage extends BaseMessage { + + private String transaction_serial_number; // 交易流水号 + private String charging_pile_code; // 桩编码 + private String charging_gun_code; // 抢号 + private BigDecimal bms_battery_charging_status; // BMS 中止荷电状态 SOC + private BigDecimal bms_minimum_battery_voltage; // BMS 动力蓄电池单体最低电压 + private BigDecimal bms_maximum_battery_voltage; // BMS 动力蓄电池单体最高电压 + private Integer bms_minimum_battery_temperature; // BMS 动力蓄电池最低温度 + private Integer bms_maximum_battery_temperature; // BMS 动力蓄电池最高温度 + private BigDecimal cumulative_charging_time; // 电桩累计充电时间 + private BigDecimal output_energy; // 电桩输出能量 + private String charger_code; // 电桩充电机编号 + +} + + diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/produce/EnhanceProduce.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/produce/EnhanceProduce.java index 5586e13..611c3b3 100644 --- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/produce/EnhanceProduce.java +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/produce/EnhanceProduce.java @@ -48,6 +48,17 @@ message.setSource(SendTagConstant.PING); return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.PING, message); } + /** + * 充电结束 + */ + public SendResult endChargeMessage(JSONObject jsonObject) { + PingMessage message = JSON.parseObject(jsonObject.toJSONString(),PingMessage.class); + // 设置业务key + message.setKey(UUID.randomUUID().toString()); + // 设置消息来源,便于查询 + message.setSource(SendTagConstant.END_CHARGE); + return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.END_CHARGE, message); + } /** * 计费模型验证请求 -- Gitblit v1.7.1