|
@@ -3,6 +3,7 @@ package com.bz.zoneiot.water.web.service.impl;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.bz.zoneiot.core.common.enums.StatusEnum;
|
|
|
+import com.bz.zoneiot.core.common.pojo.AjaxMessage;
|
|
|
import com.bz.zoneiot.core.common.pojo.Message;
|
|
|
import com.bz.zoneiot.core.oauth2.util.UserUtil;
|
|
|
import com.bz.zoneiot.water.api.dto.AlarmDetailsAddDto;
|
|
@@ -15,7 +16,9 @@ import com.bz.zoneiot.water.core.dao.DeviceSceneMapper;
|
|
|
import com.bz.zoneiot.water.core.entity.AlarmDetailsEntity;
|
|
|
import com.bz.zoneiot.water.core.entity.AlarmType;
|
|
|
import com.bz.zoneiot.water.core.entity.DeviceAttributeEntity;
|
|
|
+import com.bz.zoneiot.water.core.entity.Org;
|
|
|
import com.bz.zoneiot.water.web.client.UserCenterClient;
|
|
|
+import com.bz.zoneiot.water.web.component.MessageComponent;
|
|
|
import com.bz.zoneiot.water.web.service.AlarmTypeDetailsService;
|
|
|
import com.bz.zoneiot.water.web.service.AlarmTypeService;
|
|
|
import lombok.extern.log4j.Log4j2;
|
|
@@ -41,18 +44,15 @@ import java.util.UUID;
|
|
|
@Log4j2
|
|
|
public class AlarmTypeDetailsServiceImpl implements AlarmTypeDetailsService {
|
|
|
|
|
|
- @Resource
|
|
|
- private AmqpTemplate amqpTemplate;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private UserCenterClient userCenterClient;
|
|
|
-
|
|
|
@Value("${receive.exchange.name}")
|
|
|
private String receiveExchangeName;
|
|
|
|
|
|
@Value("${dispath.routing.key}")
|
|
|
private String dispathRoutingKey;
|
|
|
|
|
|
+ @Resource
|
|
|
+ private MessageComponent messageComponent;
|
|
|
+
|
|
|
@Resource
|
|
|
private AlarmTypeDetailMapper alarmTypeDetailMapper;
|
|
|
|
|
@@ -181,48 +181,37 @@ public class AlarmTypeDetailsServiceImpl implements AlarmTypeDetailsService {
|
|
|
alarmDetailsEntity.setState(AlarmStateEnum.REALTIME_ALARM.getCode());
|
|
|
alarmDetailsEntity.setDateCreate(new Date());
|
|
|
deviceName = sceneVo.getDeviceName();
|
|
|
- sendMessage(alarmDetailsEntity, attrName, deviceName);
|
|
|
+ sendMessage(alarmDetailsEntity, alarmType.getAlarmCategory(), attrName, deviceName);
|
|
|
result.add(alarmDetailsEntity);
|
|
|
}
|
|
|
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
- private void sendMessage(AlarmDetailsEntity alarmDetailsEntity, String attrName, String deviceName){
|
|
|
+ private void sendMessage(AlarmDetailsEntity alarmDetailsEntity, int category , String attrName, String deviceName){
|
|
|
Message message = new Message();
|
|
|
message.setStatus(1);
|
|
|
message.setTenantId(alarmDetailsEntity.getTenantId());
|
|
|
message.setMessageId(UUID.randomUUID().toString());
|
|
|
JSONObject jsonContent = new JSONObject();
|
|
|
- // ${场景名称}${设备名称}【${报警字段}】异常报警
|
|
|
jsonContent.put("场景名称",alarmDetailsEntity.getSceneName());
|
|
|
jsonContent.put("设备名称",deviceName);
|
|
|
jsonContent.put("报警字段", attrName);
|
|
|
+ if (category == 1) {
|
|
|
+ jsonContent.put("报警字段", attrName);
|
|
|
+ } else {
|
|
|
+ jsonContent.put("状态", "离线");
|
|
|
+ }
|
|
|
// 消息内容,如果需要动态使用,配合模板使用{key:value}
|
|
|
message.setMessageContent(jsonContent.toJSONString());
|
|
|
// 消息类型、模板id、渠道
|
|
|
message.setMessageType(1);
|
|
|
- message.setMessageTemplateId(1);
|
|
|
+ message.setMessageTemplateId(category == 1 ? 1 : 2);
|
|
|
message.setChannel(0);
|
|
|
- Integer companyOrgId = alarmDetailsEntity.getCompanyOrgId();
|
|
|
- Integer departmentOrgId = alarmDetailsEntity.getDeptOrgId();
|
|
|
- try{
|
|
|
- List<Integer> taskUsers = userCenterClient.findUserIdsByPermissonOrg(alarmDetailsEntity.getTenantId(),companyOrgId,departmentOrgId);
|
|
|
- if (taskUsers == null) {
|
|
|
- return;
|
|
|
- }
|
|
|
- taskUsers.forEach(id -> {
|
|
|
- message.setUserId(id);
|
|
|
- this.send(message);
|
|
|
- });
|
|
|
- } catch (Exception e) {
|
|
|
- log.error ("推送报警消息失败:{}",e);
|
|
|
- }
|
|
|
+ message.setCompanyOrgId(alarmDetailsEntity.getCompanyOrgId());
|
|
|
+ message.setDepartmentOrgId(alarmDetailsEntity.getDeptOrgId());
|
|
|
+ messageComponent.sendMessageToAllTenantUsers(message, receiveExchangeName, dispathRoutingKey);
|
|
|
}
|
|
|
|
|
|
- private void send(Message message){
|
|
|
- log.debug("消息发送 exchange={} routingkey={} 用户id={}",receiveExchangeName,dispathRoutingKey,message.getUserId());
|
|
|
- amqpTemplate.convertAndSend(receiveExchangeName, dispathRoutingKey, JSONObject.toJSONString(message));
|
|
|
- }
|
|
|
|
|
|
}
|