【验收】3 修改

This commit is contained in:
2025-11-16 21:22:09 +08:00
parent 25e03ab028
commit bfbb0ae475

View File

@ -8,6 +8,8 @@ import com.xzzn.ems.mapper.EmsFaultProtectionPlanMapper;
import com.xzzn.ems.mapper.EmsMqttTopicConfigMapper; import com.xzzn.ems.mapper.EmsMqttTopicConfigMapper;
import com.xzzn.ems.mapper.MqttSyncLogMapper; import com.xzzn.ems.mapper.MqttSyncLogMapper;
import com.xzzn.framework.web.service.MqttPublisher; import com.xzzn.framework.web.service.MqttPublisher;
import org.apache.juli.logging.Log;
import org.apache.juli.logging.LogFactory;
import org.aspectj.lang.JoinPoint; import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Aspect;
@ -23,16 +25,18 @@ import java.util.Map;
import java.util.UUID; import java.util.UUID;
/** /**
* 设备保护告警同步 * 设备保护告警方案同步
* 云端 - 本地
*/ */
@Aspect @Aspect
@Component @Component
public class FaultProtPlanAspect { public class FaultProtPlanAspect {
private static final Log logger = LogFactory.getLog(FaultProtPlanAspect.class);
@Autowired @Autowired
private MqttPublisher mqttPublisher; private MqttPublisher mqttPublisher;
private static final ObjectMapper objectMapper = new ObjectMapper(); private static final ObjectMapper objectMapper = new ObjectMapper();
private static final String STRATEGY_TOPIC = "FAULT_PROTECTION_PLAN_UP"; private static final String MQTT_TOPIC = "FAULT_PROTECTION_PLAN_UP";
private static final String TABLE_NAME = "ems_fault_protection_plan"; private static final String TABLE_NAME = "ems_fault_protection_plan";
@Autowired @Autowired
private EmsMqttTopicConfigMapper emsMqttTopicConfigMapper; private EmsMqttTopicConfigMapper emsMqttTopicConfigMapper;
@ -60,24 +64,31 @@ public class FaultProtPlanAspect {
// 定义切点拦截策略相关表的Mapper方法 // 定义切点拦截策略相关表的Mapper方法
@Pointcut("(execution(* com.xzzn.ems.mapper.EmsFaultProtectionPlanMapper.insertEmsFaultProtectionPlan(..)) && args(insertEntity)) ") @Pointcut("(execution(* com.xzzn.ems.mapper.EmsFaultProtectionPlanMapper.insertEmsFaultProtectionPlan(..)) && args(insertEntity)) ")
public void insertPointCut(EmsFaultProtectionPlan insertEntity) { public void insertPointCut(EmsFaultProtectionPlan insertEntity) {
System.out.println("【新增设备保护告警】FaultProtPlanAspect 实例化"); logger.info("【新增设备保护告警】FaultProtPlanAspect 实例化");
} }
@Pointcut("(execution(* com.xzzn.ems.mapper.EmsFaultProtectionPlanMapper.updateEmsFaultProtectionPlan(..)) && args(updateEntity)) ") @Pointcut("(execution(* com.xzzn.ems.mapper.EmsFaultProtectionPlanMapper.updateEmsFaultProtectionPlan(..)) && args(updateEntity)) ")
public void updatePointCut(EmsFaultProtectionPlan updateEntity) { public void updatePointCut(EmsFaultProtectionPlan updateEntity) {
System.out.println("【更新设备保护告警】FaultProtPlanAspect 实例化"); logger.info("【更新设备保护告警】FaultProtPlanAspect 实例化");
} }
@Pointcut("(execution(* com.xzzn.ems.mapper.EmsFaultProtectionPlanMapper.deleteEmsFaultProtectionPlanByIds(..)) && args(ids)) ") @Pointcut("(execution(* com.xzzn.ems.mapper.EmsFaultProtectionPlanMapper.deleteEmsFaultProtectionPlanByIds(..)) && args(ids)) ")
public void deletePointCut(Long[] ids) { public void deletePointCut(Long[] ids) {
System.out.println("【删除设备保护告警】FaultProtPlanAspect 实例化"); logger.info("【删除设备保护告警】FaultProtPlanAspect 实例化");
} }
// 方法执行成功后发布同步消息 // 方法执行成功后发布同步消息
@AfterReturning(pointcut = "insertPointCut(insertEntity)", returning = "result") @AfterReturning(pointcut = "insertPointCut(insertEntity)", returning = "result")
public void afterInsert(JoinPoint joinPoint, EmsFaultProtectionPlan insertEntity, Integer result) { public void afterInsert(JoinPoint joinPoint, EmsFaultProtectionPlan insertEntity, Integer result) {
System.out.println("【新增设备保护告警切面进入成功】"); logger.info("【新增设备保护告警切面进入成功】");
if (result == 0) { if (result == 0 || insertEntity == null) {
return; return;
} }
// 校验是否配置监听topic-监听则不发布
String topic = emsMqttTopicConfigMapper.checkTopicIsExist(MQTT_TOPIC);
if (!StringUtils.isEmpty(topic)) {
return;
}
// 解析方法名获取操作类型INSERT/UPDATE/DELETE和表名 // 解析方法名获取操作类型INSERT/UPDATE/DELETE和表名
String methodName = joinPoint.getSignature().getName(); String methodName = joinPoint.getSignature().getName();
String operateType = getOperateType(methodName); String operateType = getOperateType(methodName);
@ -92,10 +103,7 @@ public class FaultProtPlanAspect {
message.setContent(content); message.setContent(content);
// 发布到MQTT主题 // 发布到MQTT主题
String topic = emsMqttTopicConfigMapper.checkTopicIsExist(STRATEGY_TOPIC); mqttPublisher.publish(MQTT_TOPIC, objectMapper.writeValueAsString(message), 1);
if (StringUtils.isEmpty(topic)) {
mqttPublisher.publish(STRATEGY_TOPIC, objectMapper.writeValueAsString(message), 1);
}
} catch (Exception e) { } catch (Exception e) {
message.setStatus("FAIL"); message.setStatus("FAIL");
message.setErrorMsg(e.getMessage()); message.setErrorMsg(e.getMessage());
@ -105,10 +113,16 @@ public class FaultProtPlanAspect {
} }
@AfterReturning(pointcut = "updatePointCut(updateEntity)", returning = "result") @AfterReturning(pointcut = "updatePointCut(updateEntity)", returning = "result")
public void afterUpdate(JoinPoint joinPoint, EmsFaultProtectionPlan updateEntity, Integer result) { public void afterUpdate(JoinPoint joinPoint, EmsFaultProtectionPlan updateEntity, Integer result) {
System.out.println("【更新设备保护告警切面进入成功】"); logger.info("【更新设备保护告警切面进入成功】");
if (result == 0) { if (result == 0 || updateEntity == null) {
return; return;
} }
// 校验是否配置监听topic-监听则不发布
/*String topic = emsMqttTopicConfigMapper.checkTopicIsExist(MQTT_TOPIC);
if (!StringUtils.isEmpty(topic)) {
return;
}*/
// 解析方法名获取操作类型INSERT/UPDATE/DELETE和表名 // 解析方法名获取操作类型INSERT/UPDATE/DELETE和表名
String methodName = joinPoint.getSignature().getName(); String methodName = joinPoint.getSignature().getName();
String operateType = getOperateType(methodName); String operateType = getOperateType(methodName);
@ -122,11 +136,8 @@ public class FaultProtPlanAspect {
String content = convertEntityToJson(updateEntity); String content = convertEntityToJson(updateEntity);
message.setContent(content); message.setContent(content);
// 发布到MQTT主题 - 判断区分本地还是云上 // 发布到MQTT主题
String topic = emsMqttTopicConfigMapper.checkTopicIsExist(STRATEGY_TOPIC); mqttPublisher.publish(MQTT_TOPIC, objectMapper.writeValueAsString(message), 1);
if (StringUtils.isEmpty(topic)) {
mqttPublisher.publish(STRATEGY_TOPIC, objectMapper.writeValueAsString(message), 1);
}
} catch (Exception e) { } catch (Exception e) {
message.setStatus("FAIL"); message.setStatus("FAIL");
message.setErrorMsg(e.getMessage()); message.setErrorMsg(e.getMessage());
@ -136,10 +147,16 @@ public class FaultProtPlanAspect {
} }
@AfterReturning(pointcut = "deletePointCut(id)", returning = "result") @AfterReturning(pointcut = "deletePointCut(id)", returning = "result")
public void afterDelete(JoinPoint joinPoint, Long[] id, Integer result) { public void afterDelete(JoinPoint joinPoint, Long[] id, Integer result) {
System.out.println("【删除设备保护告警切面进入成功】"); logger.info("【删除设备保护告警切面进入成功】");
if (result == 0) { if (result == 0 || id == null) {
return; return;
} }
// 校验是否配置监听topic-监听则不发布
String topic = emsMqttTopicConfigMapper.checkTopicIsExist(MQTT_TOPIC);
if (!StringUtils.isEmpty(topic)) {
return;
}
// 解析方法名获取操作类型INSERT/UPDATE/DELETE和表名 // 解析方法名获取操作类型INSERT/UPDATE/DELETE和表名
String methodName = joinPoint.getSignature().getName(); String methodName = joinPoint.getSignature().getName();
String operateType = getOperateType(methodName); String operateType = getOperateType(methodName);
@ -159,10 +176,7 @@ public class FaultProtPlanAspect {
message.setContent(content); message.setContent(content);
// 发布到MQTT主题 // 发布到MQTT主题
String topic = emsMqttTopicConfigMapper.checkTopicIsExist(STRATEGY_TOPIC); mqttPublisher.publish(MQTT_TOPIC, objectMapper.writeValueAsString(message), 1);
if (StringUtils.isEmpty(topic)) {
mqttPublisher.publish(STRATEGY_TOPIC, objectMapper.writeValueAsString(message), 1);
}
} catch (Exception e) { } catch (Exception e) {
message.setStatus("FAIL"); message.setStatus("FAIL");
message.setErrorMsg(e.getMessage()); message.setErrorMsg(e.getMessage());
@ -178,8 +192,9 @@ public class FaultProtPlanAspect {
message.setOperateType(operateType); message.setOperateType(operateType);
message.setTableName(TABLE_NAME); message.setTableName(TABLE_NAME);
message.setCreateTime(new Date()); message.setCreateTime(new Date());
message.setTopic(STRATEGY_TOPIC); message.setTopic(MQTT_TOPIC);
message.setStatus("SUCCESS"); message.setStatus("SUCCESS");
message.setSyncObject("CLOUD");
message.setTarget(siteId); message.setTarget(siteId);
return message; return message;
} }