提交 3e83cf23 作者: 17607474349

fix:

1、数据可视化接口:查询按键报警消息、标签信息相关
上级 1c8e5c1f
...@@ -3,6 +3,7 @@ package com.yiring.app.service.key; ...@@ -3,6 +3,7 @@ package com.yiring.app.service.key;
import com.yiring.app.param.key.KeyAlarmLogFindParam; import com.yiring.app.param.key.KeyAlarmLogFindParam;
import com.yiring.app.vo.key.KeyAlarmLogVo; import com.yiring.app.vo.key.KeyAlarmLogVo;
import com.yiring.auth.param.IdsParam;
import com.yiring.common.core.Result; import com.yiring.common.core.Result;
import com.yiring.common.param.PageParam; import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo; import com.yiring.common.vo.PageVo;
...@@ -21,4 +22,11 @@ public interface KeyAlarmLogService { ...@@ -21,4 +22,11 @@ public interface KeyAlarmLogService {
* @return Result<PageVo<KeyAlarmLogVo>> * @return Result<PageVo<KeyAlarmLogVo>>
*/ */
Result<PageVo<KeyAlarmLogVo>> page(KeyAlarmLogFindParam param, PageParam pageParam); Result<PageVo<KeyAlarmLogVo>> page(KeyAlarmLogFindParam param, PageParam pageParam);
/**
* 批量发送
* @param idsParam IdsParam
* @return Result<String>
*/
Result<String> send(IdsParam idsParam);
} }
...@@ -2,17 +2,21 @@ ...@@ -2,17 +2,21 @@
package com.yiring.app.service.key.impl; package com.yiring.app.service.key.impl;
import cn.hutool.core.collection.ListUtil; import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.yiring.app.domain.key.KeyAlarmLog; import com.yiring.app.domain.key.KeyAlarmLog;
import com.yiring.app.domain.key.KeyAlarmLogRepository; import com.yiring.app.domain.key.KeyAlarmLogRepository;
import com.yiring.app.param.key.KeyAlarmLogFindParam; import com.yiring.app.param.key.KeyAlarmLogFindParam;
import com.yiring.app.push.domain.PushMessage;
import com.yiring.app.service.key.KeyAlarmLogService; import com.yiring.app.service.key.KeyAlarmLogService;
import com.yiring.app.vo.key.KeyAlarmLogVo; import com.yiring.app.vo.key.KeyAlarmLogVo;
import com.yiring.auth.domain.user.User; import com.yiring.auth.domain.user.User;
import com.yiring.auth.param.IdsParam;
import com.yiring.common.core.Result; import com.yiring.common.core.Result;
import com.yiring.common.domain.BasicEntity; import com.yiring.common.domain.BasicEntity;
import com.yiring.common.param.PageParam; import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo; import com.yiring.common.vo.PageVo;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.annotation.Resource; import javax.annotation.Resource;
...@@ -80,4 +84,22 @@ public class KeyAlarmLogServiceImpl implements KeyAlarmLogService { ...@@ -80,4 +84,22 @@ public class KeyAlarmLogServiceImpl implements KeyAlarmLogService {
PageVo<KeyAlarmLogVo> pageVo = PageVo.build(keyAlarmLogVos, keyAlarmLogs.getTotalElements()); PageVo<KeyAlarmLogVo> pageVo = PageVo.build(keyAlarmLogVos, keyAlarmLogs.getTotalElements());
return Result.ok(pageVo); return Result.ok(pageVo);
} }
@Override
public Result<String> send(IdsParam idsParam) {
Long[] ids = Convert.toLongArray(idsParam.getIds().split(","));
List<KeyAlarmLog> keyAlarmLogs = keyAlarmLogRepository.findAllById(Arrays.asList(ids));
keyAlarmLogs
.stream()
.filter(keyAlarmLog -> !keyAlarmLog.getStatus())
.forEach(keyAlarmLog -> {
switch (keyAlarmLog.getTypes()) {
case PushMessage.Type.APP.text() -> log.info("APP 信息发送中---");
case PushMessage.Type.SMS.text() -> log.info("SMS 信息发送中---");
case PushMessage.Type.EMAIL.text() -> log.info("EMAIL 信息发送中---");
}
});
return Result.ok();
}
} }
...@@ -429,6 +429,13 @@ public class PositionMessageServiceImpl implements PositionMessageService { ...@@ -429,6 +429,13 @@ public class PositionMessageServiceImpl implements PositionMessageService {
* @param data 消息内容 * @param data 消息内容
*/ */
public void processKeyWarningMessage(JSONObject data) { public void processKeyWarningMessage(JSONObject data) {
/*
- 1、判断报警消息是否存在:
- 存在则修改报警时间,当修改时间与创建时间间隔30s 则修改报警状态
- 不存在则新增
- 2、查询状态处于报警中的所有消息,通过websocket 发送消息给前端
*/
// TODO // TODO
log.info("KeyWarning Message: {}", data); log.info("KeyWarning Message: {}", data);
KeyAlarmAddParam keyAlarmAddParam = data.toJavaObject(KeyAlarmAddParam.class); KeyAlarmAddParam keyAlarmAddParam = data.toJavaObject(KeyAlarmAddParam.class);
...@@ -453,6 +460,24 @@ public class PositionMessageServiceImpl implements PositionMessageService { ...@@ -453,6 +460,24 @@ public class PositionMessageServiceImpl implements PositionMessageService {
User user = userRepositoryOne.get(); User user = userRepositoryOne.get();
Optional<KeyAlarm> keyAlarmOptional = keyAlarmRepository.findOne(
Example.of(
KeyAlarm
.builder()
.code(keyAlarmAddParam.getTagId())
.leader(User.builder().id(user.getId()).build())
.enable(true)
.build()
)
);
if (keyAlarmOptional.isPresent()) {
keyAlarmOptional.get().setUpdateTime(LocalDateTime.now());
keyAlarmRepository.save(keyAlarmOptional.get());
// log.warn("Tag Not Found: {}", "请勿重复报警");
return;
}
keyAlarm.setLeader(user); keyAlarm.setLeader(user);
keyAlarm.setEnable(true); keyAlarm.setEnable(true);
Optional<KeyAlarmRule> keyAlarmRuleOptional = keyAlarmRuleRepository.findOne( Optional<KeyAlarmRule> keyAlarmRuleOptional = keyAlarmRuleRepository.findOne(
...@@ -493,5 +518,17 @@ public class PositionMessageServiceImpl implements PositionMessageService { ...@@ -493,5 +518,17 @@ public class PositionMessageServiceImpl implements PositionMessageService {
}); });
keyAlarmLogRepository.saveAll(keyAlarmLogs); keyAlarmLogRepository.saveAll(keyAlarmLogs);
// WebSocket 推送报警消息
// 消息内容需要确定 TODO
JSONObject message = new JSONObject();
message.put("point", finalKeyAlarm.getPoint());
message.put("createTime", finalKeyAlarm.getCreateTime());
message.put("areaId", finalKeyAlarm.getAreaId());
message.put("realName", finalKeyAlarm.getLeader().getRealName());
message.put("mobile", finalKeyAlarm.getLeader().getMobile());
message.put("gender", finalKeyAlarm.getLeader().getGender());
message.put("type", finalKeyAlarm.getLeader().getType());
simpMessagingTemplate.convertAndSend("/topic/tag/keyWarning", message.toJSONString());
} }
} }
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
package com.yiring.app.stomp; package com.yiring.app.stomp;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.security.Principal; import java.security.Principal;
import lombok.AccessLevel; import lombok.AccessLevel;
...@@ -26,6 +27,7 @@ import lombok.experimental.FieldNameConstants; ...@@ -26,6 +27,7 @@ import lombok.experimental.FieldNameConstants;
@FieldDefaults(level = AccessLevel.PRIVATE) @FieldDefaults(level = AccessLevel.PRIVATE)
public class StompPrincipal implements Principal, Serializable { public class StompPrincipal implements Principal, Serializable {
@Serial
private static final long serialVersionUID = 5351052642945180737L; private static final long serialVersionUID = 5351052642945180737L;
Type type; Type type;
......
...@@ -4,12 +4,14 @@ package com.yiring.app.web.key; ...@@ -4,12 +4,14 @@ package com.yiring.app.web.key;
import com.yiring.app.param.key.KeyAlarmLogFindParam; import com.yiring.app.param.key.KeyAlarmLogFindParam;
import com.yiring.app.service.key.KeyAlarmLogService; import com.yiring.app.service.key.KeyAlarmLogService;
import com.yiring.app.vo.key.KeyAlarmLogVo; import com.yiring.app.vo.key.KeyAlarmLogVo;
import com.yiring.auth.param.IdsParam;
import com.yiring.common.core.Result; import com.yiring.common.core.Result;
import com.yiring.common.param.PageParam; import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo; import com.yiring.common.vo.PageVo;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.validation.Valid;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
...@@ -37,4 +39,10 @@ public class KeyAlarmLogController { ...@@ -37,4 +39,10 @@ public class KeyAlarmLogController {
public Result<PageVo<KeyAlarmLogVo>> page(KeyAlarmLogFindParam param, PageParam pageParam) { public Result<PageVo<KeyAlarmLogVo>> page(KeyAlarmLogFindParam param, PageParam pageParam) {
return keyAlarmLogService.page(param, pageParam); return keyAlarmLogService.page(param, pageParam);
} }
@ApiOperation("批量发送")
@GetMapping("send")
public Result<String> send(@Valid IdsParam idsParam) {
return keyAlarmLogService.send(idsParam);
}
} }
...@@ -7,6 +7,7 @@ import cn.hutool.core.convert.Convert; ...@@ -7,6 +7,7 @@ import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.github.liaochong.myexcel.core.DefaultStreamExcelBuilder; import com.github.liaochong.myexcel.core.DefaultStreamExcelBuilder;
import com.yiring.auth.domain.role.Role;
import com.yiring.auth.domain.user.User; import com.yiring.auth.domain.user.User;
import com.yiring.auth.domain.user.UserRepository; import com.yiring.auth.domain.user.UserRepository;
import com.yiring.auth.excel.user.UserExportExcel; import com.yiring.auth.excel.user.UserExportExcel;
...@@ -32,6 +33,7 @@ import javax.annotation.Resource; ...@@ -32,6 +33,7 @@ import javax.annotation.Resource;
import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.Order; import javax.persistence.criteria.Order;
import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.SetJoin;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.Workbook;
...@@ -79,7 +81,8 @@ public class UserServiceImpl implements UserService { ...@@ -79,7 +81,8 @@ public class UserServiceImpl implements UserService {
} }
if (ObjectUtil.isNotEmpty(param.getRoles())) { if (ObjectUtil.isNotEmpty(param.getRoles())) {
CriteriaBuilder.In<Long> in = cb.in(root.join(User.Fields.roles).get(BasicEntity.Fields.id)); SetJoin<User, Role> join = root.join(root.getModel().getSet(User.Fields.roles, Role.class));
CriteriaBuilder.In<Long> in = cb.in(join.get(BasicEntity.Fields.id));
String[] split = param.getRoles().split(","); String[] split = param.getRoles().split(",");
Long[] roles = Convert.toLongArray(split); Long[] roles = Convert.toLongArray(split);
for (Long roleId : roles) { for (Long roleId : roles) {
...@@ -90,7 +93,11 @@ public class UserServiceImpl implements UserService { ...@@ -90,7 +93,11 @@ public class UserServiceImpl implements UserService {
Order order = cb.desc(root.get(BasicEntity.Fields.createTime)); Order order = cb.desc(root.get(BasicEntity.Fields.createTime));
return cq.orderBy(order).where(predicates.toArray(new Predicate[0])).getRestriction(); return cq
.groupBy(root.get(BasicEntity.Fields.id))
.orderBy(order)
.where(predicates.toArray(new Predicate[0]))
.getRestriction();
}; };
// 分页 // 分页
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论