refactor(sis):

- 第三方数据添加失败通过mq回写信息
refactor(property):
- 仪表sse推送,增加水表消息推送
This commit is contained in:
2025-09-10 20:24:29 +08:00
parent 3317793834
commit a3bd994fa3
26 changed files with 399 additions and 386 deletions

View File

@@ -167,4 +167,6 @@ public class ResidentPersonVo implements Serializable {
private Date updateTime;
private String tenantId;
}

View File

@@ -43,6 +43,7 @@ public class RemoteResidentPersonServiceImpl implements RemoteResidentPersonServ
remoteResidentPersonVo.setAuthGroupId(vo.getAuthGroupId());
remoteResidentPersonVo.setAuthBegDate(vo.getAuthBegDate());
remoteResidentPersonVo.setAuthEndDate(vo.getAuthEndDate());
remoteResidentPersonVo.setTenantId(vo.getTenantId());
return remoteResidentPersonVo;
}).toList();
}
@@ -53,6 +54,7 @@ public class RemoteResidentPersonServiceImpl implements RemoteResidentPersonServ
ResidentPersonBo bo = new ResidentPersonBo();
bo.setId(personId);
bo.setEEightId(e8Id);
bo.setRemark("");
return residentPersonService.updateByBo(bo);
}

View File

@@ -9,10 +9,16 @@ public interface RocketMqConstants {
// mq topic
String TOPIC = "SmartParks";
// mq GROUP
// 仪表消费组
String METER_GROUP = "METER_GROUP";
// 授权记录消费组
String AUTH_GROUP = "AUTH_GROUP";
/*-----------------------------------消息tag------------------------------------*/
// 仪表记录
String METER_RECORD = "METER_RECORD_TAG";
// 授权记录
String AUTH_RECORD = "AUTH_MESSAGE_REPORT";
}

View File

@@ -0,0 +1,9 @@
package org.dromara.property.rocketmq.consumer;
/**
* @author lsm
* @apiNote AuthRecordConsumer
* @since 2025/9/10
*/
public class AuthRecordConsumer {
}

View File

@@ -726,6 +726,7 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
assert add != null;
add.setOrderName("工单名称");
add.setProcessingWeight(typeVo.getProcessingWeight());
add.setOrderNo("GD" + IdUtil.getSnowflakeNextIdStr());
add.setStatus(WorkOrderStatusEnum.CREATE_ORDER.getValue());
add.setReportingType(OrderReportingTypeEnum.PHONE_REPORT.getValue());

View File

@@ -246,7 +246,8 @@ public class TbMeterInfoServiceImpl implements ITbMeterInfoService {
List<TbMeterInfoVo> meterInfoVos = this.queryList(bo);
if (isMeter) {
if (meterInfoVos != null && !meterInfoVos.isEmpty()) {
List<TreeNode<Long>> l4 = meterInfoVos.stream().map(item -> {
List<TbMeterInfoVo> sortList = meterSort(meterInfoVos);
List<TreeNode<Long>> l4 = sortList.stream().map(item -> {
TreeNode<Long> node = new TreeNode<>();
node.setLevel(4);
node.setCode(item.getId());
@@ -278,20 +279,22 @@ public class TbMeterInfoServiceImpl implements ITbMeterInfoService {
// 获取当前登录用户
LoginUser user = LoginHelper.getLoginUser();
String tokenValue = StpUtil.getTokenValue();
String meter = meterType == 1L ? "power" : meterType == 2L ? "water" : meterType == 3L ? "gas" : "";
if (user == null) {
heartbeatTasks.stopTask(tokenValue);
heartbeatTasks.stopTask(tokenValue + meter);
return;
}
// 参数校验
if (meterType == 0L || floorId == 0L) {
heartbeatTasks.stopTask(tokenValue);
heartbeatTasks.stopTask(tokenValue + meter);
return;
}
// 初始化WebSocket消息
JSONObject jsonObject = new JSONObject();
jsonObject.put("type", "meter");
jsonObject.put("meterType", meterType);
// 查询仪表信息
TbMeterInfoBo meterInfoBo = new TbMeterInfoBo();
@@ -301,7 +304,7 @@ public class TbMeterInfoServiceImpl implements ITbMeterInfoService {
// 如果没有仪表信息,直接返回
if (meterInfoVoList.isEmpty()) {
heartbeatTasks.stopTask(tokenValue);
heartbeatTasks.stopTask(tokenValue + meter);
jsonObject.put("readingTime", DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
jsonObject.put("data", new ArrayList<>());
remoteMessageService.sendMessage(user.getUserId(), tokenValue, jsonObject.toString());
@@ -320,7 +323,7 @@ public class TbMeterInfoServiceImpl implements ITbMeterInfoService {
}
// 启动定时任务
heartbeatTasks.startHeartbeatTask(tokenValue, () -> {
heartbeatTasks.startHeartbeatTask(tokenValue + meter, () -> {
jsonObject.put("readingTime", DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
List<MeterResult> meterResults;
@@ -349,8 +352,8 @@ public class TbMeterInfoServiceImpl implements ITbMeterInfoService {
// 创建比较器
Comparator<TbMeterInfoVo> comparator = (m1, m2) -> {
// 提取楼层和编号数值
int[] parts1 = extractNumbers(m1.getMeterName());
int[] parts2 = extractNumbers(m2.getMeterName());
int[] parts1 = extractNumbers(m1.getMeterName(), m1.getMeterType());
int[] parts2 = extractNumbers(m2.getMeterName(), m2.getMeterType());
// 先比较楼层
if (parts1[0] != parts2[0]) {
@@ -366,11 +369,13 @@ public class TbMeterInfoServiceImpl implements ITbMeterInfoService {
/**
* 从字符串提取数字(返回[楼层, 编号]
*
* @param name 仪表名称
* @param name 仪表名称
* @param meterType 水电气类型
* @return int[]
*/
private int[] extractNumbers(String name) {
Pattern pattern = Pattern.compile("(\\d+)楼电表(\\d+)号");
private int[] extractNumbers(String name, Long meterType) {
String meter = meterType == 1L ? "" : meterType == 2L ? "" : "";
Pattern pattern = Pattern.compile("(\\d+)楼" + meter + "表(\\d+)号");
Matcher matcher = pattern.matcher(name);
if (matcher.find()) {
return new int[]{Integer.parseInt(matcher.group(1)), Integer.parseInt(matcher.group(2))};