tyty
1 year ago
8 changed files with 567 additions and 3 deletions
@ -0,0 +1,47 @@ |
|||||||
|
package com.hnac.hzims.alarm.entity; |
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModel; |
||||||
|
import lombok.Data; |
||||||
|
import org.springblade.core.tenant.mp.TenantEntity; |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* @author ysj |
||||||
|
*/ |
||||||
|
@Data |
||||||
|
@ApiModel(value = "华自3000告警对象", description = "华自3000告警对象") |
||||||
|
public class SystemAlarmEntity extends TenantEntity { |
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L; |
||||||
|
|
||||||
|
/** |
||||||
|
* 告警时间 |
||||||
|
*/ |
||||||
|
private String ts; |
||||||
|
/** |
||||||
|
* 告警ID,由平台生成,具有唯一性 |
||||||
|
*/ |
||||||
|
private String id; |
||||||
|
/** |
||||||
|
* 告警内容 |
||||||
|
*/ |
||||||
|
private String soeExplain; |
||||||
|
/** |
||||||
|
* 告警类型,对应数据字典 soe_alarm_type |
||||||
|
*/ |
||||||
|
private Integer soeType; |
||||||
|
private Integer soeStatus; |
||||||
|
/** |
||||||
|
* 告警动作,对应HZ3000的告警,如 {"分", "合"}, {"复归", "动作"} |
||||||
|
*/ |
||||||
|
private Integer soeAlarmType; |
||||||
|
/** |
||||||
|
* 动作值 |
||||||
|
*/ |
||||||
|
private String optionvals; |
||||||
|
/** |
||||||
|
* 站点id |
||||||
|
*/ |
||||||
|
private String station; |
||||||
|
|
||||||
|
} |
@ -0,0 +1,51 @@ |
|||||||
|
package com.hnac.hzims.alarm.config.ws; |
||||||
|
|
||||||
|
import com.hnac.hzims.alarm.show.service.SystemAlarmService; |
||||||
|
import lombok.extern.slf4j.Slf4j; |
||||||
|
import org.springblade.core.tool.utils.ObjectUtil; |
||||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||||
|
import org.springframework.beans.factory.annotation.Value; |
||||||
|
import org.springframework.scheduling.annotation.EnableScheduling; |
||||||
|
import org.springframework.scheduling.annotation.Scheduled; |
||||||
|
import org.springframework.stereotype.Component; |
||||||
|
|
||||||
|
import java.net.URI; |
||||||
|
|
||||||
|
/** |
||||||
|
* 等级告警获取数据长链接 |
||||||
|
* @author ysj |
||||||
|
*/ |
||||||
|
@Slf4j |
||||||
|
@Component |
||||||
|
@EnableScheduling |
||||||
|
public class SystemAlarmRegular { |
||||||
|
|
||||||
|
@Value("${hzims.system.alarm-url}") |
||||||
|
private String system_alarm_url; |
||||||
|
|
||||||
|
private SystemAlarmWebSocket client; |
||||||
|
|
||||||
|
@Autowired |
||||||
|
private SystemAlarmService systemAlarmService; |
||||||
|
|
||||||
|
// 定时发送消息
|
||||||
|
@Scheduled(cron = "0 0/30 * * * ?") |
||||||
|
private void regular(){ |
||||||
|
// 检查链接存活状态
|
||||||
|
if(ObjectUtil.isNotEmpty(client) && client.isOpen()){ |
||||||
|
client.send(systemAlarmService.sendMessage()); |
||||||
|
}else { |
||||||
|
this.createClient(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// 创建websocket链接
|
||||||
|
private void createClient() { |
||||||
|
try{ |
||||||
|
client = new SystemAlarmWebSocket(new URI(system_alarm_url)); |
||||||
|
client.connectBlocking(); |
||||||
|
}catch (Exception e){ |
||||||
|
log.error("level create error : {}",e.getMessage()); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,125 @@ |
|||||||
|
package com.hnac.hzims.alarm.config.ws; |
||||||
|
|
||||||
|
import com.hnac.hzims.alarm.show.service.SystemAlarmService; |
||||||
|
import lombok.extern.slf4j.Slf4j; |
||||||
|
import org.java_websocket.client.WebSocketClient; |
||||||
|
import org.java_websocket.handshake.ServerHandshake; |
||||||
|
import org.springblade.core.tool.utils.SpringUtil; |
||||||
|
import org.springblade.core.tool.utils.StringUtil; |
||||||
|
|
||||||
|
import javax.net.ssl.SSLContext; |
||||||
|
import javax.net.ssl.TrustManager; |
||||||
|
import javax.net.ssl.X509TrustManager; |
||||||
|
import java.net.Socket; |
||||||
|
import java.net.URI; |
||||||
|
import java.security.SecureRandom; |
||||||
|
import java.security.cert.X509Certificate; |
||||||
|
import java.util.Optional; |
||||||
|
|
||||||
|
/** |
||||||
|
* 等级告警获取数据长链接 |
||||||
|
* @author ysj |
||||||
|
*/ |
||||||
|
@Slf4j |
||||||
|
public class SystemAlarmWebSocket extends WebSocketClient { |
||||||
|
|
||||||
|
private final SystemAlarmService systemAlarmService; |
||||||
|
|
||||||
|
/** |
||||||
|
* 构造等级告警websocket |
||||||
|
* @param uri |
||||||
|
*/ |
||||||
|
public SystemAlarmWebSocket(URI uri) { |
||||||
|
super(uri); |
||||||
|
systemAlarmService = SpringUtil.getBean(SystemAlarmService.class); |
||||||
|
connection(this); |
||||||
|
} |
||||||
|
|
||||||
|
// 链接到服务器回调接口
|
||||||
|
@Override |
||||||
|
public void onOpen(ServerHandshake handshakedata) { |
||||||
|
log.error("systemAlarm websocket open"); |
||||||
|
} |
||||||
|
|
||||||
|
// 接收到服务器消息回调接口
|
||||||
|
@Override |
||||||
|
public void onMessage(String message) { |
||||||
|
if(StringUtil.isEmpty(message)){ |
||||||
|
log.error("systemAlarm on message is null"); |
||||||
|
}else{ |
||||||
|
// 等级告警数据处理
|
||||||
|
systemAlarmService.receiveMessage(message); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// 与服务器链接中断回调接口
|
||||||
|
@Override |
||||||
|
public void onClose(int code, String reason, boolean remote) { |
||||||
|
log.error("systemAlarm websocket close"); |
||||||
|
} |
||||||
|
|
||||||
|
// 与服务器通讯异常触发
|
||||||
|
@Override |
||||||
|
public void onError(Exception e) { |
||||||
|
log.error("systemAlarm websocket error : {}",e.getMessage()); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 建立链接 |
||||||
|
* @param webSocket |
||||||
|
*/ |
||||||
|
private void connection(SystemAlarmWebSocket webSocket) { |
||||||
|
SSLContext context = init(); |
||||||
|
if(Optional.ofNullable(context).isPresent()){ |
||||||
|
Socket socket = create(context); |
||||||
|
if(Optional.ofNullable(socket).isPresent()){ |
||||||
|
webSocket.setSocket(socket); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 创建Socket |
||||||
|
* @param context |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
private Socket create(SSLContext context) { |
||||||
|
Socket socket = null; |
||||||
|
try{ |
||||||
|
socket = context.getSocketFactory().createSocket(); |
||||||
|
}catch (Exception e){ |
||||||
|
log.error("systemAlarm socket create error : {}",e.getMessage()); |
||||||
|
} |
||||||
|
return socket; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 协议初始化 |
||||||
|
* @return SSLContext |
||||||
|
*/ |
||||||
|
private SSLContext init() { |
||||||
|
SSLContext SSL = null; |
||||||
|
try{ |
||||||
|
SSL = SSLContext.getInstance("TLS"); |
||||||
|
SSL.init(null, new TrustManager[]{new X509TrustManager() { |
||||||
|
@Override |
||||||
|
public void checkClientTrusted(X509Certificate[] chain, |
||||||
|
String authType) { |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void checkServerTrusted(X509Certificate[] chain, String authType) { |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public X509Certificate[] getAcceptedIssuers() { |
||||||
|
return new X509Certificate[0]; |
||||||
|
} |
||||||
|
}}, new SecureRandom()); |
||||||
|
}catch (Exception e){ |
||||||
|
log.error("systemAlarm SSL init error : {}",e.getMessage()); |
||||||
|
} |
||||||
|
return SSL; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,82 @@ |
|||||||
|
package com.hnac.hzims.alarm.show.controller; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
||||||
|
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; |
||||||
|
import com.hnac.hzims.alarm.entity.AlarmEntity; |
||||||
|
import com.hnac.hzims.alarm.show.service.AlarmService; |
||||||
|
import io.swagger.annotations.Api; |
||||||
|
import io.swagger.annotations.ApiOperation; |
||||||
|
import io.swagger.annotations.ApiParam; |
||||||
|
import lombok.AllArgsConstructor; |
||||||
|
import org.springblade.core.boot.ctrl.BladeController; |
||||||
|
import org.springblade.core.mp.support.Condition; |
||||||
|
import org.springblade.core.mp.support.Query; |
||||||
|
import org.springblade.core.tool.api.R; |
||||||
|
import org.springblade.core.tool.utils.Func; |
||||||
|
import org.springframework.web.bind.annotation.*; |
||||||
|
import springfox.documentation.annotations.ApiIgnore; |
||||||
|
|
||||||
|
import javax.validation.Valid; |
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author ysj |
||||||
|
*/ |
||||||
|
@RestController |
||||||
|
@AllArgsConstructor |
||||||
|
@RequestMapping("/show/alarm") |
||||||
|
@Api(value = "告警配置", tags = "告警配置") |
||||||
|
public class ShowAlarmController extends BladeController { |
||||||
|
|
||||||
|
private final AlarmService alarmService; |
||||||
|
|
||||||
|
@PostMapping("/save") |
||||||
|
@ApiOperationSupport(order = 1) |
||||||
|
@ApiOperation(value = "新增", notes = "传入AlarmEntity对象") |
||||||
|
public R save(@Valid @RequestBody AlarmEntity entity) { |
||||||
|
return R.status(alarmService.save(entity)); |
||||||
|
} |
||||||
|
|
||||||
|
@PostMapping("/update") |
||||||
|
@ApiOperationSupport(order = 2) |
||||||
|
@ApiOperation(value = "修改", notes = "传入AlarmEntity对象") |
||||||
|
public R update(@Valid @RequestBody AlarmEntity entity) { |
||||||
|
return R.status(alarmService.updateById(entity)); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@PostMapping("/remove") |
||||||
|
@ApiOperationSupport(order = 3) |
||||||
|
@ApiOperation(value = "逻辑删除", notes = "传入ids") |
||||||
|
public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) { |
||||||
|
return R.status(alarmService.deleteLogic(Func.toLongList(ids))); |
||||||
|
} |
||||||
|
@GetMapping("/count") |
||||||
|
@ApiOperationSupport(order = 4) |
||||||
|
@ApiOperation(value = "告警数量", notes = "传入em_model_param") |
||||||
|
public R count(@ApiIgnore @RequestParam AlarmEntity entity) { |
||||||
|
QueryWrapper<AlarmEntity> queryWrapper = Condition.getQueryWrapper(entity); |
||||||
|
int count = alarmService.count(queryWrapper); |
||||||
|
return R.data(count); |
||||||
|
} |
||||||
|
|
||||||
|
@GetMapping("/list") |
||||||
|
@ApiOperationSupport(order = 4) |
||||||
|
@ApiOperation(value = "分页", notes = "传入em_model_param") |
||||||
|
public R<IPage<AlarmEntity>> list(@ApiIgnore @RequestParam Map<String,Object> params, Query query) { |
||||||
|
QueryWrapper<AlarmEntity> queryWrapper = Condition.getQueryWrapper( params, AlarmEntity.class); |
||||||
|
IPage<AlarmEntity> pages = alarmService.page(Condition.getPage(query), queryWrapper); |
||||||
|
return R.data(pages); |
||||||
|
} |
||||||
|
|
||||||
|
@GetMapping("/detail") |
||||||
|
@ApiOperationSupport(order = 5) |
||||||
|
@ApiOperation(value = "详情", notes = "传入em_model_param") |
||||||
|
public R<AlarmEntity> detail(AlarmEntity entity) { |
||||||
|
AlarmEntity detail = alarmService.getOne(Condition.getQueryWrapper(entity)); |
||||||
|
return R.data(detail); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,12 @@ |
|||||||
|
package com.hnac.hzims.alarm.show.service; |
||||||
|
|
||||||
|
/** |
||||||
|
* 告警处理接口 |
||||||
|
* @author ysj |
||||||
|
*/ |
||||||
|
public interface SystemAlarmService { |
||||||
|
|
||||||
|
String sendMessage(); |
||||||
|
|
||||||
|
void receiveMessage(String message); |
||||||
|
} |
@ -0,0 +1,221 @@ |
|||||||
|
package com.hnac.hzims.alarm.show.service.impl; |
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject; |
||||||
|
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; |
||||||
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
||||||
|
import com.hnac.hzims.alarm.entity.AlarmEntity; |
||||||
|
import com.hnac.hzims.alarm.entity.SystemAlarmEntity; |
||||||
|
import com.hnac.hzims.alarm.show.service.AlarmService; |
||||||
|
import com.hnac.hzims.alarm.show.service.SystemAlarmService; |
||||||
|
import com.hnac.hzims.equipment.feign.IEmInfoClient; |
||||||
|
import com.hnac.hzims.message.MessageConstants; |
||||||
|
import com.hnac.hzims.message.dto.MessagePushRecordDto; |
||||||
|
import com.hnac.hzims.message.fegin.IMessageClient; |
||||||
|
import com.hnac.hzims.operational.alert.constants.AbnormalAlarmConstant; |
||||||
|
import com.hnac.hzims.operational.station.entity.StationEntity; |
||||||
|
import com.hnac.hzims.operational.station.feign.IStationClient; |
||||||
|
import lombok.RequiredArgsConstructor; |
||||||
|
import lombok.extern.slf4j.Slf4j; |
||||||
|
import org.springblade.core.log.exception.ServiceException; |
||||||
|
import org.springblade.core.tool.api.R; |
||||||
|
import org.springblade.core.tool.utils.CollectionUtil; |
||||||
|
import org.springblade.core.tool.utils.DateUtil; |
||||||
|
import org.springblade.core.tool.utils.StringUtil; |
||||||
|
import org.springblade.system.feign.ISysClient; |
||||||
|
import org.springblade.system.user.entity.User; |
||||||
|
import org.springblade.system.user.feign.IUserClient; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
import java.util.*; |
||||||
|
import java.util.concurrent.CompletableFuture; |
||||||
|
import java.util.concurrent.ConcurrentHashMap; |
||||||
|
import java.util.stream.Collectors; |
||||||
|
|
||||||
|
/** |
||||||
|
* 等级告警实现类 |
||||||
|
* @author ysj |
||||||
|
*/ |
||||||
|
@Slf4j |
||||||
|
@Service |
||||||
|
@RequiredArgsConstructor |
||||||
|
public class SystemAlarmServiceImpl implements SystemAlarmService { |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private final IEmInfoClient deviceClient; |
||||||
|
private final IUserClient userClient; |
||||||
|
|
||||||
|
private final ISysClient sysClient; |
||||||
|
|
||||||
|
private final IMessageClient messageClient; |
||||||
|
private final AlarmService alarmService; |
||||||
|
private final IStationClient stationClient; |
||||||
|
/** |
||||||
|
* 定时发送消息内容 |
||||||
|
* @return String |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public String sendMessage() { |
||||||
|
R<List<StationEntity>> listAll = stationClient.getListAll(); |
||||||
|
if (!listAll.isSuccess()||CollectionUtil.isEmpty(listAll.getData())){ |
||||||
|
throw new ServiceException("level send message is null"); |
||||||
|
} |
||||||
|
List<StationEntity> stations = listAll.getData(); |
||||||
|
Map<String,String> map = new ConcurrentHashMap<>(); |
||||||
|
map.put("stations",stations.stream().map(StationEntity::getCode).collect(Collectors.joining(","))); |
||||||
|
map.put("soe_type", AbnormalAlarmConstant.SYSTEM_TYPE_LIST); |
||||||
|
return JSONObject.toJSONString(map); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* 接收服务推送消息 |
||||||
|
* @param message |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public void receiveMessage(String message) { |
||||||
|
// 对象转换
|
||||||
|
List<SystemAlarmEntity> alarms = JSONObject.parseArray(message, SystemAlarmEntity.class); |
||||||
|
if(CollectionUtil.isEmpty(alarms)){ |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
R<List<StationEntity>> listAll = stationClient.getListAll(); |
||||||
|
if (!listAll.isSuccess()||CollectionUtil.isEmpty(listAll.getData())){ |
||||||
|
throw new ServiceException("level send message is null"); |
||||||
|
} |
||||||
|
List<StationEntity> stations = listAll.getData(); |
||||||
|
// 查询当天已经记录的告警
|
||||||
|
List<AlarmEntity> historys = alarmService.list(Wrappers.<AlarmEntity>lambdaQuery(). |
||||||
|
ge(AlarmEntity::getCreateTime, DateUtil.format(new Date(), DateUtil.PATTERN_DATE) + " 00:00:00")); |
||||||
|
|
||||||
|
// 数据过滤
|
||||||
|
List<AlarmEntity> entitys = alarms.stream() |
||||||
|
.filter(alarm -> CollectionUtil.isNotEmpty(historys) || !historys.stream().map(AlarmEntity::getAlarmId).collect(Collectors.toList()).contains(alarm.getId())) |
||||||
|
.map(item->{ |
||||||
|
AlarmEntity entity = getAlarmEntity(item); |
||||||
|
return entity; |
||||||
|
}).collect(Collectors.toList()); |
||||||
|
if(CollectionUtil.isEmpty(entitys)){ |
||||||
|
return; |
||||||
|
} |
||||||
|
// 批量保存
|
||||||
|
alarmService.saveBatch(entitys); |
||||||
|
|
||||||
|
// 消息推送
|
||||||
|
CompletableFuture.runAsync(()->this.sendAlarmMessage(entitys,stations.stream().filter(station -> entitys.stream().filter(stationId -> !StringUtil.isEmpty(stationId)).map(AlarmEntity::getStationId).collect(Collectors.toList()).contains(station.getCode())).collect(Collectors.toList()))); |
||||||
|
} |
||||||
|
|
||||||
|
private AlarmEntity getAlarmEntity(SystemAlarmEntity item) { |
||||||
|
AlarmEntity entity = new AlarmEntity(); |
||||||
|
entity.setAlarmId(item.getId()); |
||||||
|
entity.setAlarmTime(DateUtil.parse(item.getTs(), "yyyy-MM-dd HH:mm:ss.s")); |
||||||
|
entity.setAlarmContext(item.getSoeExplain()); |
||||||
|
entity.setAlarmType(item.getSoeAlarmType()); |
||||||
|
entity.setAlarmStatus(item.getSoeStatus()); |
||||||
|
entity.setAlarmValue(item.getOptionvals()); |
||||||
|
entity.setStationId(item.getStation()); |
||||||
|
R<StationEntity> stationByCode = stationClient.getStationByCode(item.getStation()); |
||||||
|
if (stationByCode.isSuccess()&& ObjectUtils.isNotEmpty(stationByCode.getData())){ |
||||||
|
entity.setCreateDept(stationByCode.getData().getCreateDept()); |
||||||
|
} |
||||||
|
return entity; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* 告警消息推送 |
||||||
|
* @param entitys |
||||||
|
*/ |
||||||
|
private void sendAlarmMessage(List<AlarmEntity> entitys,List<StationEntity> stations) { |
||||||
|
if(CollectionUtil.isEmpty(entitys)){ |
||||||
|
return; |
||||||
|
} |
||||||
|
// // 告警等级 :一级、二级告警发送通知
|
||||||
|
// List<HistoryLevelAlarmEntity> alarms = entitys.stream().filter(entity -> AbnormalAlarmConstant.LEVEL_LIST.contains(entity.getAlarmLevel())).collect(Collectors.toList());
|
||||||
|
// if(CollectionUtil.isEmpty(alarms)){
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
// 查询站点用户
|
||||||
|
entitys.forEach(entity->{ |
||||||
|
if(StringUtil.isEmpty(entity.getStationId())){ |
||||||
|
return; |
||||||
|
} |
||||||
|
List<Long> depts = stations.stream().filter(station -> station.getCode().equals(entity.getStationId())).map(StationEntity::getRefDept).collect(Collectors.toList()); |
||||||
|
if(CollectionUtil.isEmpty(depts)){ |
||||||
|
return; |
||||||
|
} |
||||||
|
// app,web消息推送
|
||||||
|
this.sendMessageByWebApp(depts.get(0),entity); |
||||||
|
// 短信推送
|
||||||
|
//this.message(depts.get(0),entity);
|
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
private void sendMessageByWebApp(Long dept,AlarmEntity entity) { |
||||||
|
// 获取站点用户
|
||||||
|
R<List<User>> result = userClient.userListByDeptId(dept); |
||||||
|
if(!result.isSuccess() || CollectionUtil.isEmpty(result.getData())){ |
||||||
|
return; |
||||||
|
} |
||||||
|
MessagePushRecordDto message = new MessagePushRecordDto(); |
||||||
|
message.setBusinessClassify("warning"); |
||||||
|
message.setBusinessKey(MessageConstants.BusinessClassifyEnum.WARNING.getKey()); |
||||||
|
message.setSubject(MessageConstants.BusinessClassifyEnum.WARNING.getDescription()); |
||||||
|
message.setTaskId(entity.getId()); |
||||||
|
message.setTenantId("200000"); |
||||||
|
message.setContent(entity.getAlarmContext()); |
||||||
|
message.setTypes(Arrays.asList(MessageConstants.APP_PUSH, MessageConstants.WS_PUSH)); |
||||||
|
message.setPushType(MessageConstants.IMMEDIATELY); |
||||||
|
message.setDeptId(dept); |
||||||
|
message.setCreateDept(dept); |
||||||
|
R<String> deptName = sysClient.getDeptName(dept); |
||||||
|
if (deptName.isSuccess()) { |
||||||
|
message.setDeptName(deptName.getData()); |
||||||
|
} |
||||||
|
message.setCreateDept(dept); |
||||||
|
result.getData().forEach(user->{ |
||||||
|
message.setPusher(String.valueOf(user.getId())); |
||||||
|
message.setPusherName(user.getName()); |
||||||
|
message.setAccount(String.valueOf(user.getId())); |
||||||
|
message.setCreateUser(user.getId()); |
||||||
|
messageClient.sendMessage(message); |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 发送短信 |
||||||
|
* @param dept |
||||||
|
* @param entity |
||||||
|
*/ |
||||||
|
private void message(Long dept,AlarmEntity entity) { |
||||||
|
// 获取站点用户
|
||||||
|
R<List<User>> result = userClient.relationUserListByRoleAlias("200000",dept,"projectManager"); |
||||||
|
if(!result.isSuccess() || CollectionUtil.isEmpty(result.getData())){ |
||||||
|
return; |
||||||
|
} |
||||||
|
MessagePushRecordDto message = new MessagePushRecordDto(); |
||||||
|
message.setBusinessClassify("warning"); |
||||||
|
message.setBusinessKey(MessageConstants.BusinessClassifyEnum.WARNING.getKey()); |
||||||
|
message.setSubject(MessageConstants.BusinessClassifyEnum.WARNING.getDescription()); |
||||||
|
message.setTaskId(entity.getId()); |
||||||
|
message.setTenantId("200000"); |
||||||
|
message.setContent(entity.getAlarmContext()); |
||||||
|
message.setTypes(Collections.singletonList(MessageConstants.SMS_PUSH)); |
||||||
|
message.setPushType(MessageConstants.IMMEDIATELY); |
||||||
|
message.setDeptId(dept); |
||||||
|
R<String> deptName = sysClient.getDeptName(dept); |
||||||
|
if (deptName.isSuccess()) { |
||||||
|
message.setDeptName(deptName.getData()); |
||||||
|
} |
||||||
|
User admin = userClient.userByAccount("200000", "admin").getData(); |
||||||
|
message.setCreateDept(admin.getCreateDept()); |
||||||
|
message.setCreateUser(admin.getId()); |
||||||
|
result.getData().forEach(user->{ |
||||||
|
message.setPusher(String.valueOf(user.getId())); |
||||||
|
message.setPusherName(user.getName()); |
||||||
|
message.setAccount(String.valueOf(user.getId())); |
||||||
|
messageClient.sendMessage(message); |
||||||
|
}); |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue