远程通知反馈接口

This commit is contained in:
2025-06-27 10:19:59 +08:00
parent 38332616fa
commit 424a81ac53
17 changed files with 637 additions and 108 deletions

View File

@@ -0,0 +1,9 @@
package com.njcn.gather.event.devcie.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.gather.event.devcie.pojo.po.PqLinedetail;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface PqLinedetailMapper extends BaseMapper<PqLinedetail> {
}

View File

@@ -0,0 +1,52 @@
package com.njcn.gather.event.devcie.pojo.po;
/**
* @Author: cdf
* @CreateTime: 2025-06-26
* @Description:
*/
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
@Data
@TableName("PQ_LINEDETAIL")
public class PqLinedetail {
@TableId(value = "LINE_INDEX", type = IdType.INPUT)
private Integer lineIndex;
private Integer gdIndex;
private Integer subIndex;
private String lineName;
private Integer pttype;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date lastTime;
private Integer tinterval;
private String loadtype;
private String businesstype;
private String remark;
private String monitorId;
private Integer powerid;
private String objname;
@TableField(fill = FieldFill.INSERT)
private Integer statflag;
private String lineGrade;
private String powerSubstationName;
}

View File

@@ -4,6 +4,8 @@ import cn.hutool.json.JSONObject;
import com.njcn.common.pojo.annotation.OperateInfo; import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.enums.response.CommonResponseEnum; import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.pojo.response.HttpResult;
import com.njcn.gather.event.devcie.pojo.po.PqsDeptsline;
import com.njcn.gather.event.devcie.service.PqsDeptslineService;
import com.njcn.gather.event.transientes.websocket.WebSocketServer; import com.njcn.gather.event.transientes.websocket.WebSocketServer;
import com.njcn.web.controller.BaseController; import com.njcn.web.controller.BaseController;
import com.njcn.web.utils.HttpResultUtil; import com.njcn.web.utils.HttpResultUtil;
@@ -12,6 +14,7 @@ import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
/** /**
@@ -25,9 +28,13 @@ import org.springframework.web.bind.annotation.*;
@RequiredArgsConstructor @RequiredArgsConstructor
@Slf4j @Slf4j
public class EventGateController extends BaseController { public class EventGateController extends BaseController {
@Value("${SYS_TYPE_ZT}")
private String sysTypeZt;
private final WebSocketServer webSocketServer; private final WebSocketServer webSocketServer;
private final PqsDeptslineService pqsDeptslineService;
@OperateInfo @OperateInfo
@GetMapping("/eventMsg") @GetMapping("/eventMsg")
@@ -37,10 +44,20 @@ public class EventGateController extends BaseController {
String methodDescribe = getMethodDescribe("eventMsg"); String methodDescribe = getMethodDescribe("eventMsg");
log.info("接收到暂降事件:{}",msg); log.info("接收到暂降事件:{}",msg);
JSONObject jsonObject = new JSONObject(msg); //JSONObject jsonObject = new JSONObject(msg);
webSocketServer.sendMessageToAll(jsonObject.toString()); webSocketServer.sendMessageToAll(msg);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
} }
private void sendMessage(JSONObject jsonObject){
Integer lineId = Integer.valueOf(jsonObject.get("lineid").toString());
pqsDeptslineService.lambdaQuery().eq(PqsDeptsline::getLineIndex,lineId).eq(PqsDeptsline::getSystype,sysTypeZt);
}
} }

View File

@@ -6,6 +6,7 @@ import com.njcn.common.pojo.constant.OperateType;
import com.njcn.common.pojo.enums.response.CommonResponseEnum; import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.pojo.response.HttpResult;
import com.njcn.gather.event.transientes.pojo.param.LargeScreenCountParam; import com.njcn.gather.event.transientes.pojo.param.LargeScreenCountParam;
import com.njcn.gather.event.transientes.pojo.param.MessageEventFeedbackParam;
import com.njcn.gather.event.transientes.pojo.po.MsgEventInfo; import com.njcn.gather.event.transientes.pojo.po.MsgEventInfo;
import com.njcn.gather.event.transientes.pojo.vo.*; import com.njcn.gather.event.transientes.pojo.vo.*;
import com.njcn.gather.event.transientes.service.LargeScreenCountService; import com.njcn.gather.event.transientes.service.LargeScreenCountService;
@@ -16,6 +17,7 @@ import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
@@ -118,13 +120,33 @@ public class LargeScreenCountController extends BaseController {
@OperateInfo @OperateInfo
@PostMapping("/msgSendList") @PostMapping("/msgSendList")
@ApiOperation("远程通知列表") @ApiOperation("远程通知列表")
@ApiImplicitParam(name = "eventId", value = "暂降事件id", required = true) @ApiImplicitParam(name = "largeScreenCountParam", value = "参数", required = true)
public HttpResult<List<MsgEventInfo>> msgSendList(@RequestBody LargeScreenCountParam largeScreenCountParam) { public HttpResult<List<MsgEventInfo>> msgSendList(@RequestBody LargeScreenCountParam largeScreenCountParam) {
String methodDescribe = getMethodDescribe("msgSendList"); String methodDescribe = getMethodDescribe("msgSendList");
List<MsgEventInfo> result = largeScreenCountService.msgSendList(largeScreenCountParam); List<MsgEventInfo> result = largeScreenCountService.msgSendList(largeScreenCountParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
} }
@OperateInfo
@PostMapping("/hasSendMsgPage")
@ApiOperation("已发送短信列表")
@ApiImplicitParam(name = "largeScreenCountParam", value = "参数", required = true)
public HttpResult<Page<MsgEventInfo>> hasSendMsgPage(@RequestBody LargeScreenCountParam largeScreenCountParam) {
String methodDescribe = getMethodDescribe("hasSendMsgPage");
Page<MsgEventInfo> result = largeScreenCountService.hasSendMsgPage(largeScreenCountParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
@OperateInfo(operateType = OperateType.ADD)
@PostMapping("/msgHandle")
@ApiOperation("短信处理")
@ApiImplicitParam(name = "eventId", value = "暂降事件id", required = true)
public HttpResult<Boolean> msgHandle(@RequestBody @Validated MessageEventFeedbackParam messageEventFeedbackParam) {
String methodDescribe = getMethodDescribe("msgHandle");
largeScreenCountService.msgHandle(messageEventFeedbackParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe);
}
} }

View File

@@ -0,0 +1,37 @@
package com.njcn.gather.event.transientes.handler;
import com.njcn.common.pojo.constant.LogInfo;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.MethodArgumentNotValidException;
import java.lang.reflect.Method;
import java.util.Objects;
/**
* @author hongawen
* @version 1.0.0
* @date 2021年06月22日 10:25
*/
@Slf4j
public class ControllerUtil {
/**
* 针对methodArgumentNotValidException 异常的处理
* @author cdf
*/
public static String getMethodArgumentNotValidException(MethodArgumentNotValidException methodArgumentNotValidException) {
String operate = LogInfo.UNKNOWN_OPERATE;
Method method = null;
try {
method = methodArgumentNotValidException.getParameter().getMethod();
if (!Objects.isNull(method) && method.isAnnotationPresent(ApiOperation.class)) {
ApiOperation apiOperation = method.getAnnotation(ApiOperation.class);
operate = apiOperation.value();
}
}catch (Exception e){
log.error("根据方法参数非法异常获取@ApiOperation注解值失败参数非法异常信息{},方法名:{},异常信息:{}",methodArgumentNotValidException.getMessage(),method,e.getMessage());
}
return operate;
}
}

View File

@@ -0,0 +1,255 @@
package com.njcn.gather.event.transientes.handler;
import cn.hutool.core.text.StrFormatter;
import cn.hutool.core.util.StrUtil;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.LogUtil;
import com.njcn.web.utils.HttpResultUtil;
import com.njcn.web.utils.HttpServletUtil;
import com.njcn.web.utils.ReflectCommonUtil;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.json.JSONException;
import org.springframework.validation.ObjectError;
import org.springframework.web.HttpMediaTypeNotSupportedException;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.util.NestedServletException;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.validation.ConstraintViolation;
import javax.validation.ConstraintViolationException;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* 全局通用业务异常处理器
*
* @author hongawen
* @version 1.0.0
* @date 2021年04月20日 18:04
*/
@Slf4j
@AllArgsConstructor
@RestControllerAdvice
public class GlobalBusinessExceptionHandler {
private final ThreadPoolExecutor executor = new ThreadPoolExecutor(
4, 8, 30, TimeUnit.SECONDS,
new LinkedBlockingQueue<>(100),
// 队列满时由主线程执行
new ThreadPoolExecutor.CallerRunsPolicy()
);
/**
* 捕获业务功能异常,通常为业务数据抛出的异常
*
* @param businessException 业务异常
*/
@ExceptionHandler(BusinessException.class)
public HttpResult<String> handleBusinessException(BusinessException businessException) {
String operate = ReflectCommonUtil.getMethodDescribeByException(businessException);
// recodeBusinessExceptionLog(businessException, businessException.getMessage());
return HttpResultUtil.assembleBusinessExceptionResult(businessException, null, operate);
}
/**
* 空指针异常捕捉
*
* @param nullPointerException 空指针异常
*/
@ExceptionHandler(NullPointerException.class)
public HttpResult<String> handleNullPointerException(NullPointerException nullPointerException) {
LogUtil.logExceptionStackInfo(CommonResponseEnum.NULL_POINTER_EXCEPTION.getMessage(), nullPointerException);
//recodeBusinessExceptionLog(nullPointerException, CommonResponseEnum.NULL_POINTER_EXCEPTION.getMessage());
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.NULL_POINTER_EXCEPTION, null, ReflectCommonUtil.getMethodDescribeByException(nullPointerException));
}
/**
* 算数运算异常
*
* @param arithmeticException 算数运算异常由于除数为0引起的异常
*/
@ExceptionHandler(ArithmeticException.class)
public HttpResult<String> handleArithmeticException(ArithmeticException arithmeticException) {
LogUtil.logExceptionStackInfo(CommonResponseEnum.ARITHMETIC_EXCEPTION.getMessage(), arithmeticException);
// recodeBusinessExceptionLog(arithmeticException, CommonResponseEnum.ARITHMETIC_EXCEPTION.getMessage());
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.ARITHMETIC_EXCEPTION, null, ReflectCommonUtil.getMethodDescribeByException(arithmeticException));
}
/**
* 类型转换异常捕捉
*
* @param classCastException 类型转换异常
*/
@ExceptionHandler(ClassCastException.class)
public HttpResult<String> handleClassCastException(ClassCastException classCastException) {
LogUtil.logExceptionStackInfo(CommonResponseEnum.CLASS_CAST_EXCEPTION.getMessage(), classCastException);
// recodeBusinessExceptionLog(classCastException, CommonResponseEnum.CLASS_CAST_EXCEPTION.getMessage());
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.CLASS_CAST_EXCEPTION, null, ReflectCommonUtil.getMethodDescribeByException(classCastException));
}
/**
* 索引下标越界异常捕捉
*
* @param indexOutOfBoundsException 索引下标越界异常
*/
@ExceptionHandler(IndexOutOfBoundsException.class)
public HttpResult<String> handleIndexOutOfBoundsException(IndexOutOfBoundsException indexOutOfBoundsException) {
LogUtil.logExceptionStackInfo(CommonResponseEnum.INDEX_OUT_OF_BOUNDS_EXCEPTION.getMessage(), indexOutOfBoundsException);
// recodeBusinessExceptionLog(indexOutOfBoundsException, CommonResponseEnum.INDEX_OUT_OF_BOUNDS_EXCEPTION.getMessage());
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.INDEX_OUT_OF_BOUNDS_EXCEPTION, null, ReflectCommonUtil.getMethodDescribeByException(indexOutOfBoundsException));
}
/**
* 前端请求后端,请求中参数的媒体方式不支持异常
*
* @param httpMediaTypeNotSupportedException 请求中参数的媒体方式不支持异常
*/
@ExceptionHandler(HttpMediaTypeNotSupportedException.class)
public HttpResult<String> httpMediaTypeNotSupportedExceptionHandler(HttpMediaTypeNotSupportedException httpMediaTypeNotSupportedException) {
LogUtil.logExceptionStackInfo(CommonResponseEnum.HTTP_MEDIA_TYPE_NOT_SUPPORTED_EXCEPTION.getMessage(), httpMediaTypeNotSupportedException);
// 然后提取错误提示信息进行返回
// recodeBusinessExceptionLog(httpMediaTypeNotSupportedException, CommonResponseEnum.HTTP_MEDIA_TYPE_NOT_SUPPORTED_EXCEPTION.getMessage());
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.HTTP_MEDIA_TYPE_NOT_SUPPORTED_EXCEPTION, null, ReflectCommonUtil.getMethodDescribeByException(httpMediaTypeNotSupportedException));
}
/**
* 前端请求后端,参数校验异常捕捉
* RequestBody注解参数异常
*
* @param methodArgumentNotValidException 参数校验异常
*/
@ExceptionHandler(MethodArgumentNotValidException.class)
public HttpResult<String> methodArgumentNotValidExceptionHandler(MethodArgumentNotValidException methodArgumentNotValidException) {
// 从异常对象中拿到allErrors数据
String messages = methodArgumentNotValidException.getBindingResult().getAllErrors()
.stream().map(ObjectError::getDefaultMessage).collect(Collectors.joining(""));
// 然后提取错误提示信息进行返回
LogUtil.njcnDebug(log, "参数校验异常,异常为:{}", messages);
// recodeBusinessExceptionLog(methodArgumentNotValidException, CommonResponseEnum.METHOD_ARGUMENT_NOT_VALID_EXCEPTION.getMessage());
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.METHOD_ARGUMENT_NOT_VALID_EXCEPTION, messages, ControllerUtil.getMethodArgumentNotValidException(methodArgumentNotValidException));
}
/**
* 前端请求后端,参数校验异常捕捉
* PathVariable注解、RequestParam注解参数异常
*
* @param constraintViolationException 参数校验异常
*/
@ExceptionHandler(ConstraintViolationException.class)
public HttpResult<String> constraintViolationExceptionExceptionHandler(ConstraintViolationException constraintViolationException) {
String exceptionMessage = constraintViolationException.getMessage();
StringBuilder messages = new StringBuilder();
if (exceptionMessage.indexOf(StrUtil.COMMA) > 0) {
String[] tempMessage = exceptionMessage.split(StrUtil.COMMA);
Stream.of(tempMessage).forEach(message -> {
messages.append(message.substring(message.indexOf(StrUtil.COLON) + 2)).append(';');
});
} else {
messages.append(exceptionMessage.substring(exceptionMessage.indexOf(StrUtil.COLON) + 2));
}
// 然后提取错误提示信息进行返回
LogUtil.njcnDebug(log, "参数校验异常,异常为:{}", messages);
// recodeBusinessExceptionLog(constraintViolationException, CommonResponseEnum.METHOD_ARGUMENT_NOT_VALID_EXCEPTION.getMessage());
List<ConstraintViolation<?>> constraintViolationList = new ArrayList<>(constraintViolationException.getConstraintViolations());
ConstraintViolation<?> constraintViolation = constraintViolationList.get(0);
Class<?> rootBeanClass = constraintViolation.getRootBeanClass();
//判断校验参数异常捕获的根源是controller还是service处
if (rootBeanClass.getName().endsWith("Controller")) {
String methodName = constraintViolation.getPropertyPath().toString().substring(0, constraintViolation.getPropertyPath().toString().indexOf(StrUtil.DOT));
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.METHOD_ARGUMENT_NOT_VALID_EXCEPTION, messages.toString(), ReflectCommonUtil.getMethodDescribeByClassAndMethodName(rootBeanClass, methodName));
} else {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.METHOD_ARGUMENT_NOT_VALID_EXCEPTION, messages.toString(), ReflectCommonUtil.getMethodDescribeByException(constraintViolationException));
}
}
/**
* 索引下标越界异常捕捉
*
* @param illegalArgumentException 参数校验异常
*/
@ExceptionHandler(IllegalArgumentException.class)
public HttpResult<String> handleIndexOutOfBoundsException(IllegalArgumentException illegalArgumentException) {
LogUtil.logExceptionStackInfo(CommonResponseEnum.ILLEGAL_ARGUMENT_EXCEPTION.getMessage(), illegalArgumentException);
// recodeBusinessExceptionLog(illegalArgumentException, CommonResponseEnum.ILLEGAL_ARGUMENT_EXCEPTION.getMessage());
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.ILLEGAL_ARGUMENT_EXCEPTION, illegalArgumentException.getMessage(), ReflectCommonUtil.getMethodDescribeByException(illegalArgumentException));
}
/**
* 未声明异常捕捉
*
* @param exception 未声明异常
*/
@ExceptionHandler(Exception.class)
public HttpResult<String> handleException(Exception exception) {
//针对fallbackFactory降级异常特殊处理
Exception tempException = exception;
String exceptionCause = CommonResponseEnum.UN_DECLARE.getMessage();
String code = CommonResponseEnum.UN_DECLARE.getCode();
if (exception instanceof NestedServletException) {
Throwable cause = exception.getCause();
if (cause instanceof AssertionError) {
if (cause.getCause() instanceof BusinessException) {
tempException = (BusinessException) cause.getCause();
BusinessException tempBusinessException = (BusinessException) cause.getCause();
exceptionCause = tempBusinessException.getMessage();
code = tempBusinessException.getCode();
}
}
}
LogUtil.logExceptionStackInfo(exceptionCause, tempException);
// recodeBusinessExceptionLog(exception, exceptionCause);
//判断方法上是否有自定义注解,做特殊处理
// Method method = ReflectCommonUtil.getMethod(exception);
// if (!Objects.isNull(method)){
// if(method.isAnnotationPresent(ReturnMsg.class)){
// return HttpResultUtil.assembleResult(code, null, StrFormatter.format("{}",exceptionCause));
// }
// }
return HttpResultUtil.assembleResult(code, null, StrFormatter.format("{}{}{}", ReflectCommonUtil.getMethodDescribeByException(tempException), StrUtil.C_COMMA, exceptionCause));
}
/**
* json解析异常
*
* @param jsonException json参数
*/
@ExceptionHandler(JSONException.class)
public HttpResult<String> handleIndexOutOfBoundsException(JSONException jsonException) {
LogUtil.logExceptionStackInfo(CommonResponseEnum.JSON_CONVERT_EXCEPTION.getMessage(), jsonException);
// recodeBusinessExceptionLog(jsonException, CommonResponseEnum.JSON_CONVERT_EXCEPTION.getMessage());
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.JSON_CONVERT_EXCEPTION, jsonException.getMessage(), ReflectCommonUtil.getMethodDescribeByException(jsonException));
}
/*
private void recodeBusinessExceptionLog(Exception businessException, String methodDescribe) {
HttpServletRequest httpServletRequest = HttpServletUtil.getRequest();
Future<?> future = executor.submit(() -> {
HttpServletUtil.setRequest(httpServletRequest);
sysLogAuditService.recodeBusinessExceptionLog(businessException, methodDescribe);
});
try {
// 抛出 ExecutionException
future.get();
} catch (ExecutionException | InterruptedException e) {
log.error("保存审计日志异常,异常为:" + e.getMessage());
}
}*/
}

View File

@@ -2,6 +2,10 @@ package com.njcn.gather.event.transientes.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.gather.event.devcie.pojo.po.PqsDeptsline; import com.njcn.gather.event.devcie.pojo.po.PqsDeptsline;
import com.njcn.gather.event.transientes.pojo.po.PqsUserSet;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
* *
@@ -12,4 +16,6 @@ import com.njcn.gather.event.devcie.pojo.po.PqsDeptsline;
* @version V1.0.0 * @version V1.0.0
*/ */
public interface PqsDeptslineMapper extends BaseMapper<PqsDeptsline> { public interface PqsDeptslineMapper extends BaseMapper<PqsDeptsline> {
List<PqsDeptsline> getPhoneUser(@Param("lineId")String lineId);
} }

View File

@@ -12,4 +12,11 @@
<!--@mbg.generated--> <!--@mbg.generated-->
DEPTS_INDEX, LINE_INDEX, SYSTYPE DEPTS_INDEX, LINE_INDEX, SYSTYPE
</sql> </sql>
<select id="getPhoneUser">
select *
from
PQS_DEPTSLINE deptLine
inner join PQS_DEPTS dept on deptLine.DEPTS_INDEX = DEPTS_INDEX
</select>
</mapper> </mapper>

View File

@@ -0,0 +1,38 @@
package com.njcn.gather.event.transientes.pojo.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.time.LocalDate;
/**
* @Author: cdf
* @CreateTime: 2025-06-26
* @Description:
*/
@Data
public class MessageEventFeedbackParam {
@NotBlank(message = "暂降事件id不可为空")
private String eventIndex;
@NotNull(message = "是否影响敏感用户不可为空")
@ApiModelProperty(value = " 0.否 1.是")
private Integer isSensitive;
@ApiModelProperty(value = "方案")
private String influenceFactors;
@DateTimeFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(value = "处理时间")
private LocalDate dealDate;
@ApiModelProperty(value = "原因")
private String dealScheme;
private String remark;
}

View File

@@ -33,6 +33,8 @@ public class MsgEventInfo implements Serializable {
*/ */
private String userId; private String userId;
private String userName;
/** /**
* 发送时间 * 发送时间
*/ */
@@ -48,4 +50,19 @@ public class MsgEventInfo implements Serializable {
* 事件索引 * 事件索引
*/ */
private String eventIndex; private String eventIndex;
/**
* 手机号
*/
private String phone;
/**
* 发送结果
*/
private Integer sendResult;
/**
* 是否反馈
*/
private Integer isHandle;
} }

View File

@@ -26,6 +26,8 @@ public class EventMsgDetailVO {
private String remark; private String remark;
private String objName;
private List<MsgEventInfo> msgList; private List<MsgEventInfo> msgList;
} }

View File

@@ -46,10 +46,10 @@ public class AuthController extends BaseController {
SecurityContextHolder.getContext().setAuthentication(authentication); SecurityContextHolder.getContext().setAuthentication(authentication);
// 直接从 Authentication 对象中获取已加载的 UserDetails避免重复查询 // 直接从 Authentication 对象中获取已加载的 UserDetails避免重复查询
UserDetails userDetails = (UserDetails) authentication.getPrincipal(); MyUserDetails userDetails = (MyUserDetails) authentication.getPrincipal();
// 获取用户部门(假设 CustomUserDetails 包含部门信息) // 获取用户部门(假设 CustomUserDetails 包含部门信息)
String department = ((MyUserDetails) userDetails).getDeptId(); String department = userDetails.getDeptId();
final String jwt = jwtUtil.generateToken(userDetails); final String jwt = jwtUtil.generateToken(userDetails);

View File

@@ -24,7 +24,8 @@ public class MyUserDetails implements UserDetails {
private boolean credentialsNonExpired; // 凭证是否未过期 private boolean credentialsNonExpired; // 凭证是否未过期
private boolean enabled; // 账户是否启用 private boolean enabled; // 账户是否启用
public MyUserDetails(String username, String password, String deptId,Collection<? extends GrantedAuthority> authorities) { public MyUserDetails(String userId,String username, String password, String deptId,Collection<? extends GrantedAuthority> authorities) {
this.userId = userId;
this.username = username; this.username = username;
this.password = password; this.password = password;
this.deptId = deptId; this.deptId = deptId;

View File

@@ -31,7 +31,7 @@ public class MyUserDetailsService implements UserDetailsService {
public MyUserDetails loadUserByUsername(String username) throws UsernameNotFoundException { public MyUserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
LambdaQueryWrapper<PqsUser> userWrapper = new LambdaQueryWrapper<>(); /* LambdaQueryWrapper<PqsUser> userWrapper = new LambdaQueryWrapper<>();
userWrapper.eq(PqsUser::getLoginname,username); userWrapper.eq(PqsUser::getLoginname,username);
PqsUser pqsUser = pqsUserMapper.selectOne(userWrapper); PqsUser pqsUser = pqsUserMapper.selectOne(userWrapper);
if(Objects.isNull(pqsUser)){ if(Objects.isNull(pqsUser)){
@@ -41,7 +41,7 @@ public class MyUserDetailsService implements UserDetailsService {
LambdaQueryWrapper<PqsUserSet> userSetWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<PqsUserSet> userSetWrapper = new LambdaQueryWrapper<>();
userSetWrapper.eq(PqsUserSet::getUserIndex,pqsUser.getUserIndex()); userSetWrapper.eq(PqsUserSet::getUserIndex,pqsUser.getUserIndex());
PqsUserSet pqsUserSet = pqsUserSetMapper.selectOne(userSetWrapper); PqsUserSet pqsUserSet = pqsUserSetMapper.selectOne(userSetWrapper);
String deptId = pqsUserSet.getDeptsIndex(); String deptId = pqsUserSet.getDeptsIndex();*/
@@ -49,17 +49,17 @@ public class MyUserDetailsService implements UserDetailsService {
if ("cdf".equals(username)) { if ("cdf".equals(username)) {
PasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); PasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
String encodedPassword = passwordEncoder.encode("@#001njcnpqs"); String encodedPassword = passwordEncoder.encode("@#001njcnpqs");
return new MyUserDetails("cdf", encodedPassword,"10001", return new MyUserDetails("1","cdf", encodedPassword,"10001",
new ArrayList<>()); new ArrayList<>());
}else if("screen".equals(username)){ }else if("screen".equals(username)){
PasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); PasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
String encodedPassword = passwordEncoder.encode("@#001njcnpqs"); String encodedPassword = passwordEncoder.encode("@#001njcnpqs");
return new MyUserDetails("screen", encodedPassword,"10001", return new MyUserDetails("2","screen", encodedPassword,"10001",
new ArrayList<>()); new ArrayList<>());
} else if("test".equals(username)){ } else if("test".equals(username)){
PasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); PasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
String encodedPassword = passwordEncoder.encode("@#001njcnpqs"); String encodedPassword = passwordEncoder.encode("@#001njcnpqs");
return new MyUserDetails("test", encodedPassword,"10001", return new MyUserDetails("3","test", encodedPassword,"10001",
new ArrayList<>()); new ArrayList<>());
}else { }else {
throw new UsernameNotFoundException("User not found with username: " + username); throw new UsernameNotFoundException("User not found with username: " + username);

View File

@@ -2,6 +2,7 @@ package com.njcn.gather.event.transientes.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.gather.event.transientes.pojo.param.LargeScreenCountParam; import com.njcn.gather.event.transientes.pojo.param.LargeScreenCountParam;
import com.njcn.gather.event.transientes.pojo.param.MessageEventFeedbackParam;
import com.njcn.gather.event.transientes.pojo.po.MsgEventInfo; import com.njcn.gather.event.transientes.pojo.po.MsgEventInfo;
import com.njcn.gather.event.transientes.pojo.po.PqsEventdetail; import com.njcn.gather.event.transientes.pojo.po.PqsEventdetail;
import com.njcn.gather.event.transientes.pojo.vo.*; import com.njcn.gather.event.transientes.pojo.vo.*;
@@ -35,6 +36,10 @@ public interface LargeScreenCountService {
List<MsgEventInfo> msgSendList(LargeScreenCountParam largeScreenCountParam); List<MsgEventInfo> msgSendList(LargeScreenCountParam largeScreenCountParam);
Page<MsgEventInfo> hasSendMsgPage(LargeScreenCountParam largeScreenCountParam);
boolean msgHandle(MessageEventFeedbackParam messageEventFeedbackParam);
} }

View File

@@ -6,6 +6,7 @@ import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.util.IdUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -14,23 +15,34 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.github.yulichang.wrapper.segments.Fun; import com.github.yulichang.wrapper.segments.Fun;
import com.njcn.common.pojo.enums.common.DataStateEnum; import com.njcn.common.pojo.enums.common.DataStateEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException; import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.gather.event.devcie.mapper.PqLineMapper; import com.njcn.gather.event.devcie.mapper.PqLineMapper;
import com.njcn.gather.event.devcie.mapper.PqLinedetailMapper;
import com.njcn.gather.event.devcie.pojo.dto.LedgerBaseInfoDTO; import com.njcn.gather.event.devcie.pojo.dto.LedgerBaseInfoDTO;
import com.njcn.gather.event.devcie.pojo.po.PqLinedetail;
import com.njcn.gather.event.transientes.pojo.param.LargeScreenCountParam; import com.njcn.gather.event.transientes.pojo.param.LargeScreenCountParam;
import com.njcn.gather.event.devcie.pojo.po.PqDevice; import com.njcn.gather.event.devcie.pojo.po.PqDevice;
import com.njcn.gather.event.devcie.pojo.po.PqLine; import com.njcn.gather.event.devcie.pojo.po.PqLine;
import com.njcn.gather.event.devcie.pojo.po.PqsDeptsline; import com.njcn.gather.event.devcie.pojo.po.PqsDeptsline;
import com.njcn.gather.event.transientes.pojo.param.MessageEventFeedbackParam;
import com.njcn.gather.event.transientes.pojo.po.PqsDepts;
import com.njcn.gather.event.transientes.pojo.po.MessageEventFeedback;
import com.njcn.gather.event.transientes.pojo.po.MsgEventInfo;
import com.njcn.gather.event.transientes.pojo.po.PqsEventdetail;
import com.njcn.gather.event.transientes.pojo.po.*; import com.njcn.gather.event.transientes.pojo.po.*;
import com.njcn.gather.event.transientes.pojo.vo.*; import com.njcn.gather.event.transientes.pojo.vo.*;
import com.njcn.gather.event.devcie.service.*; import com.njcn.gather.event.devcie.service.*;
import com.njcn.gather.event.transientes.service.*; import com.njcn.gather.event.transientes.service.*;
import com.njcn.gather.event.devcie.service.PqsDeptslineService; import com.njcn.gather.event.devcie.service.PqsDeptslineService;
import com.njcn.gather.event.transientes.utils.JwtUtil;
import com.njcn.web.factory.PageFactory;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.time.LocalDate; import java.time.LocalDate;
@@ -51,6 +63,7 @@ import java.util.stream.Collectors;
@Slf4j @Slf4j
public class LargeScreenCountServiceImpl implements LargeScreenCountService { public class LargeScreenCountServiceImpl implements LargeScreenCountService {
private final JwtUtil jwtUtil;
private final PqsDeptslineService pqsDeptslineService; private final PqsDeptslineService pqsDeptslineService;
private final PqsDeptsService pqsDeptsService; private final PqsDeptsService pqsDeptsService;
private final PqLineService pqLineService; private final PqLineService pqLineService;
@@ -62,17 +75,19 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService {
private final CommGeneralService commGeneralService; private final CommGeneralService commGeneralService;
private final PqsUsersetService pqsUsersetService; private final PqsUsersetService pqsUsersetService;
private final PqLinedetailMapper pqLinedetailMapper;
@Value("${SYS_TYPE_ZT}") @Value("${SYS_TYPE_ZT}")
private String sysTypeZt; private String sysTypeZt;
@Override @Override
public LedgerCountVO scaleStatistics(LargeScreenCountParam largeScreenCountParam) { public LedgerCountVO scaleStatistics(LargeScreenCountParam largeScreenCountParam) {
LedgerCountVO ledgerCountVO = new LedgerCountVO(); LedgerCountVO ledgerCountVO = new LedgerCountVO();
//根据用户获取当前部门及子部门id //根据用户获取当前部门及子部门id
List<String> deptAndChildren = pqsDeptsService.findDeptAndChildren( largeScreenCountParam.getDeptId()); List<String> deptAndChildren = pqsDeptsService.findDeptAndChildren(largeScreenCountParam.getDeptId());
//获取对应监测点id //获取对应监测点id
List<PqsDeptsline> deptslines = pqsDeptslineService.lambdaQuery().in(PqsDeptsline::getDeptsIndex, deptAndChildren).eq(PqsDeptsline::getSystype, sysTypeZt).list(); List<PqsDeptsline> deptslines = pqsDeptslineService.lambdaQuery().in(PqsDeptsline::getDeptsIndex, deptAndChildren).eq(PqsDeptsline::getSystype, sysTypeZt).list();
List<Integer> deptslineIds = deptslines.stream().map(PqsDeptsline::getLineIndex).collect(Collectors.toList()); List<Integer> deptslineIds = deptslines.stream().map(PqsDeptsline::getLineIndex).collect(Collectors.toList());
if(CollectionUtils.isEmpty(deptslineIds)){ if (CollectionUtils.isEmpty(deptslineIds)) {
throw new BusinessException("部门下暂无监测点"); throw new BusinessException("部门下暂无监测点");
} }
@@ -110,35 +125,35 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService {
//结束时间 //结束时间
String endTime = DateUtil.format(DateUtil.endOfMonth(new Date()), DatePattern.NORM_DATETIME_FORMATTER); String endTime = DateUtil.format(DateUtil.endOfMonth(new Date()), DatePattern.NORM_DATETIME_FORMATTER);
//根据用户获取当前部门及子部门id //根据用户获取当前部门及子部门id
List<String> deptAndChildren = pqsDeptsService.findDeptAndChildren( largeScreenCountParam.getDeptId()); List<String> deptAndChildren = pqsDeptsService.findDeptAndChildren(largeScreenCountParam.getDeptId());
//获取对应监测点id //获取对应监测点id
List<PqsDeptsline> deptslines = pqsDeptslineService.lambdaQuery().in(PqsDeptsline::getDeptsIndex, deptAndChildren).eq(PqsDeptsline::getSystype, sysTypeZt).list(); List<PqsDeptsline> deptslines = pqsDeptslineService.lambdaQuery().in(PqsDeptsline::getDeptsIndex, deptAndChildren).eq(PqsDeptsline::getSystype, sysTypeZt).list();
List<Integer> deptslineIds = deptslines.stream().map(PqsDeptsline::getLineIndex).collect(Collectors.toList()); List<Integer> deptslineIds = deptslines.stream().map(PqsDeptsline::getLineIndex).collect(Collectors.toList());
if(CollectionUtils.isEmpty(deptslineIds)){ if (CollectionUtils.isEmpty(deptslineIds)) {
throw new BusinessException("部门下暂无监测点"); throw new BusinessException("部门下暂无监测点");
} }
List<PqsEventdetail> eventdetails = pqsEventdetailService.lambdaQuery() List<PqsEventdetail> eventdetails = pqsEventdetailService.lambdaQuery()
.between(PqsEventdetail::getTimeid, LocalDateTimeUtil.parse(startTime,DatePattern.NORM_DATETIME_FORMATTER), LocalDateTimeUtil.parse(endTime,DatePattern.NORM_DATETIME_FORMATTER)) .between(PqsEventdetail::getTimeid, LocalDateTimeUtil.parse(startTime, DatePattern.NORM_DATETIME_FORMATTER), LocalDateTimeUtil.parse(endTime, DatePattern.NORM_DATETIME_FORMATTER))
.in(PqsEventdetail::getLineid,deptslineIds).list(); .in(PqsEventdetail::getLineid, deptslineIds).list();
Integer eventCount = eventdetails.size(); Integer eventCount = eventdetails.size();
// 告警 // 告警
List<PqsEventdetail> aLarmEvent = eventdetails.stream().filter(temp -> temp.getEventvalue() < 0.5).collect(Collectors.toList()); List<PqsEventdetail> aLarmEvent = eventdetails.stream().filter(temp -> temp.getEventvalue() < 0.5).collect(Collectors.toList());
// 预警 // 预警
List<PqsEventdetail> warnEvent = eventdetails.stream().filter(temp -> temp.getEventvalue() >= 0.5&& temp.getEventvalue() <0.9).collect(Collectors.toList()); List<PqsEventdetail> warnEvent = eventdetails.stream().filter(temp -> temp.getEventvalue() >= 0.5 && temp.getEventvalue() < 0.9).collect(Collectors.toList());
List<PqsEventdetail> noticeEvent = eventdetails.stream().filter(temp ->Objects.equals(temp.getNoticeFlag(),1)).collect(Collectors.toList()); List<PqsEventdetail> noticeEvent = eventdetails.stream().filter(temp -> Objects.equals(temp.getNoticeFlag(), 1)).collect(Collectors.toList());
List<PqsEventdetail> lookALarmEvent = aLarmEvent.stream().filter(temp ->Objects.equals(temp.getLookFlag(),1 )).collect(Collectors.toList()); List<PqsEventdetail> lookALarmEvent = aLarmEvent.stream().filter(temp -> Objects.equals(temp.getLookFlag(), 1)).collect(Collectors.toList());
List<PqsEventdetail> lookWarnEvent = warnEvent.stream().filter(temp ->Objects.equals(temp.getLookFlag(),1 ) ).collect(Collectors.toList()); List<PqsEventdetail> lookWarnEvent = warnEvent.stream().filter(temp -> Objects.equals(temp.getLookFlag(), 1)).collect(Collectors.toList());
List<PqsEventdetail> lookNoticeEvent = noticeEvent.stream().filter(temp -> Objects.equals(temp.getLookFlag(),1 )).collect(Collectors.toList()); List<PqsEventdetail> lookNoticeEvent = noticeEvent.stream().filter(temp -> Objects.equals(temp.getLookFlag(), 1)).collect(Collectors.toList());
Integer aLarmCount =aLarmEvent.size(); Integer aLarmCount = aLarmEvent.size();
Integer warnCount =warnEvent.size(); Integer warnCount = warnEvent.size();
Integer noticeCount =noticeEvent.size(); Integer noticeCount = noticeEvent.size();
Integer lookALarmCount =lookALarmEvent.size(); Integer lookALarmCount = lookALarmEvent.size();
Integer lookWarnCount =lookWarnEvent.size(); Integer lookWarnCount = lookWarnEvent.size();
Integer lookNoticeCount =lookNoticeEvent.size(); Integer lookNoticeCount = lookNoticeEvent.size();
alarmAnalysisVO.setEventCount(eventCount); alarmAnalysisVO.setEventCount(eventCount);
alarmAnalysisVO.setALarmCount(aLarmCount); alarmAnalysisVO.setALarmCount(aLarmCount);
@@ -169,41 +184,41 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService {
LocalDateTime startTime; LocalDateTime startTime;
//结束时间 //结束时间
LocalDateTime endTime; LocalDateTime endTime;
if(largeScreenCountParam.getType()==3){ if (largeScreenCountParam.getType() == 3) {
//起始时间 //起始时间
startTime = LocalDateTimeUtil.parse(DateUtil.format(DateUtil.beginOfMonth(new Date()), DatePattern.NORM_DATETIME_FORMATTER),DatePattern.NORM_DATETIME_FORMATTER); startTime = LocalDateTimeUtil.parse(DateUtil.format(DateUtil.beginOfMonth(new Date()), DatePattern.NORM_DATETIME_FORMATTER), DatePattern.NORM_DATETIME_FORMATTER);
//结束时间 //结束时间
endTime = LocalDateTimeUtil.parse(DateUtil.format(DateUtil.endOfMonth(new Date()), DatePattern.NORM_DATETIME_FORMATTER),DatePattern.NORM_DATETIME_FORMATTER); endTime = LocalDateTimeUtil.parse(DateUtil.format(DateUtil.endOfMonth(new Date()), DatePattern.NORM_DATETIME_FORMATTER), DatePattern.NORM_DATETIME_FORMATTER);
}else if(largeScreenCountParam.getType()==4){ } else if (largeScreenCountParam.getType() == 4) {
//起始时间 //起始时间
startTime = LocalDateTimeUtil.parse(DateUtil.format(DateUtil.beginOfWeek(new Date()), DatePattern.NORM_DATETIME_FORMATTER),DatePattern.NORM_DATETIME_FORMATTER); startTime = LocalDateTimeUtil.parse(DateUtil.format(DateUtil.beginOfWeek(new Date()), DatePattern.NORM_DATETIME_FORMATTER), DatePattern.NORM_DATETIME_FORMATTER);
//结束时间 //结束时间
endTime = LocalDateTimeUtil.parse(DateUtil.format(DateUtil.endOfWeek(new Date()), DatePattern.NORM_DATETIME_FORMATTER),DatePattern.NORM_DATETIME_FORMATTER); endTime = LocalDateTimeUtil.parse(DateUtil.format(DateUtil.endOfWeek(new Date()), DatePattern.NORM_DATETIME_FORMATTER), DatePattern.NORM_DATETIME_FORMATTER);
}else { } else {
throw new BusinessException("统计类型有误类型"); throw new BusinessException("统计类型有误类型");
} }
List<String> deptAndChildren = pqsDeptsService.findDeptAndChildren( largeScreenCountParam.getDeptId()); List<String> deptAndChildren = pqsDeptsService.findDeptAndChildren(largeScreenCountParam.getDeptId());
//获取对应监测点id //获取对应监测点id
List<PqsDeptsline> deptslines = pqsDeptslineService.lambdaQuery().in(PqsDeptsline::getDeptsIndex, deptAndChildren).eq(PqsDeptsline::getSystype, sysTypeZt).list(); List<PqsDeptsline> deptslines = pqsDeptslineService.lambdaQuery().in(PqsDeptsline::getDeptsIndex, deptAndChildren).eq(PqsDeptsline::getSystype, sysTypeZt).list();
List<Integer> deptslineIds = deptslines.stream().map(PqsDeptsline::getLineIndex).collect(Collectors.toList()); List<Integer> deptslineIds = deptslines.stream().map(PqsDeptsline::getLineIndex).collect(Collectors.toList());
if(CollectionUtils.isEmpty(deptslineIds)){ if (CollectionUtils.isEmpty(deptslineIds)) {
throw new BusinessException("部门下暂无监测点"); throw new BusinessException("部门下暂无监测点");
} }
List<PqsEventdetail> eventdetails = new ArrayList<>(); List<PqsEventdetail> eventdetails = new ArrayList<>();
if(Objects.equals(largeScreenCountParam.getEventtype(),1)){ if (Objects.equals(largeScreenCountParam.getEventtype(), 1)) {
eventdetails = pqsEventdetailService.lambdaQuery() eventdetails = pqsEventdetailService.lambdaQuery()
.between(PqsEventdetail::getTimeid, startTime, endTime) .between(PqsEventdetail::getTimeid, startTime, endTime)
.in(PqsEventdetail::getLineid,deptslineIds) .in(PqsEventdetail::getLineid, deptslineIds)
.eq(PqsEventdetail::getNoticeFlag,largeScreenCountParam.getEventtype()).list(); .eq(PqsEventdetail::getNoticeFlag, largeScreenCountParam.getEventtype()).list();
}else { } else {
eventdetails = pqsEventdetailService.lambdaQuery() eventdetails = pqsEventdetailService.lambdaQuery()
.between(PqsEventdetail::getTimeid, startTime, endTime) .between(PqsEventdetail::getTimeid, startTime, endTime)
.in(PqsEventdetail::getLineid,deptslineIds) .in(PqsEventdetail::getLineid, deptslineIds)
.and(w -> w.eq(PqsEventdetail::getNoticeFlag, 0).or().isNull(PqsEventdetail::getNoticeFlag)).list(); .and(w -> w.eq(PqsEventdetail::getNoticeFlag, 0).or().isNull(PqsEventdetail::getNoticeFlag)).list();
} }
LocalDate startDate =LocalDate.parse(DateUtil.format(startTime, DatePattern.NORM_DATE_PATTERN)) ; LocalDate startDate = LocalDate.parse(DateUtil.format(startTime, DatePattern.NORM_DATE_PATTERN));
LocalDate endDate = LocalDate.parse(DateUtil.format(endTime, DatePattern.NORM_DATE_PATTERN)) ; LocalDate endDate = LocalDate.parse(DateUtil.format(endTime, DatePattern.NORM_DATE_PATTERN));
List<String> dateList = new ArrayList<>(); List<String> dateList = new ArrayList<>();
@@ -221,18 +236,18 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService {
@Override @Override
public Page<EventDetailVO> eventList(LargeScreenCountParam largeScreenCountParam) { public Page<EventDetailVO> eventList(LargeScreenCountParam largeScreenCountParam) {
Page<PqsEventdetail> pqsEventdetailPage = new Page<> (largeScreenCountParam.getPageNum ( ), largeScreenCountParam.getPageSize ( )); Page<PqsEventdetail> pqsEventdetailPage = new Page<>(largeScreenCountParam.getPageNum(), largeScreenCountParam.getPageSize());
//起始时间 //起始时间
LocalDateTime startTime = LocalDateTimeUtil.parse(DateUtil.format(DateUtil.beginOfMonth(new Date()), DatePattern.NORM_DATETIME_FORMATTER),DatePattern.NORM_DATETIME_FORMATTER); LocalDateTime startTime = LocalDateTimeUtil.parse(DateUtil.format(DateUtil.beginOfMonth(new Date()), DatePattern.NORM_DATETIME_FORMATTER), DatePattern.NORM_DATETIME_FORMATTER);
//结束时间 //结束时间
LocalDateTime endTime = LocalDateTimeUtil.parse(DateUtil.format(DateUtil.endOfMonth(new Date()), DatePattern.NORM_DATETIME_FORMATTER),DatePattern.NORM_DATETIME_FORMATTER); LocalDateTime endTime = LocalDateTimeUtil.parse(DateUtil.format(DateUtil.endOfMonth(new Date()), DatePattern.NORM_DATETIME_FORMATTER), DatePattern.NORM_DATETIME_FORMATTER);
//根据用户获取当前部门及子部门id //根据用户获取当前部门及子部门id
List<String> deptAndChildren = pqsDeptsService.findDeptAndChildren( largeScreenCountParam.getDeptId()); List<String> deptAndChildren = pqsDeptsService.findDeptAndChildren(largeScreenCountParam.getDeptId());
//获取对应监测点id //获取对应监测点id
List<PqsDeptsline> deptslines = pqsDeptslineService.lambdaQuery().in(PqsDeptsline::getDeptsIndex, deptAndChildren).eq(PqsDeptsline::getSystype, sysTypeZt).list(); List<PqsDeptsline> deptslines = pqsDeptslineService.lambdaQuery().in(PqsDeptsline::getDeptsIndex, deptAndChildren).eq(PqsDeptsline::getSystype, sysTypeZt).list();
List<Integer> deptslineIds = deptslines.stream().map(PqsDeptsline::getLineIndex).collect(Collectors.toList()); List<Integer> deptslineIds = deptslines.stream().map(PqsDeptsline::getLineIndex).collect(Collectors.toList());
if(CollectionUtils.isEmpty(deptslineIds)){ if (CollectionUtils.isEmpty(deptslineIds)) {
throw new BusinessException("部门下暂无监测点"); throw new BusinessException("部门下暂无监测点");
} }
@@ -240,17 +255,17 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService {
Map<Integer,LedgerBaseInfoDTO> ledgerBaseInfoDTOMap = pqLineList.stream().collect(Collectors.toMap(LedgerBaseInfoDTO::getLineId, Function.identity())); Map<Integer,LedgerBaseInfoDTO> ledgerBaseInfoDTOMap = pqLineList.stream().collect(Collectors.toMap(LedgerBaseInfoDTO::getLineId, Function.identity()));
QueryWrapper<PqsEventdetail> queryWrapper = new QueryWrapper<>(); QueryWrapper<PqsEventdetail> queryWrapper = new QueryWrapper<>();
if(Objects.equals(largeScreenCountParam.getEventtype(),1)){ if (Objects.equals(largeScreenCountParam.getEventtype(), 1)) {
queryWrapper.lambda() queryWrapper.lambda()
.between(PqsEventdetail::getTimeid, startTime, endTime) .between(PqsEventdetail::getTimeid, startTime, endTime)
.in(PqsEventdetail::getLineid,deptslineIds) .in(PqsEventdetail::getLineid, deptslineIds)
.eq(PqsEventdetail::getNoticeFlag,largeScreenCountParam.getEventtype()) .eq(PqsEventdetail::getNoticeFlag, largeScreenCountParam.getEventtype())
.orderByAsc(PqsEventdetail::getLookFlag) .orderByAsc(PqsEventdetail::getLookFlag)
.orderByDesc(PqsEventdetail::getTimeid); .orderByDesc(PqsEventdetail::getTimeid);
}else { } else {
queryWrapper.lambda() queryWrapper.lambda()
.between(PqsEventdetail::getTimeid, startTime, endTime) .between(PqsEventdetail::getTimeid, startTime, endTime)
.in(PqsEventdetail::getLineid,deptslineIds) .in(PqsEventdetail::getLineid, deptslineIds)
.and(w -> w.eq(PqsEventdetail::getNoticeFlag, 0).or().isNull(PqsEventdetail::getNoticeFlag)) .and(w -> w.eq(PqsEventdetail::getNoticeFlag, 0).or().isNull(PqsEventdetail::getNoticeFlag))
.orderByAsc(PqsEventdetail::getLookFlag) .orderByAsc(PqsEventdetail::getLookFlag)
.orderByDesc(PqsEventdetail::getTimeid); .orderByDesc(PqsEventdetail::getTimeid);
@@ -284,7 +299,7 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService {
eventDetailVO.setNeedDealFlag(noticeLineIds.contains(temp.getLineid())?1:0); eventDetailVO.setNeedDealFlag(noticeLineIds.contains(temp.getLineid())?1:0);
return eventDetailVO; return eventDetailVO;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
Page<EventDetailVO> returnpage = new Page<> (largeScreenCountParam.getPageNum ( ), largeScreenCountParam.getPageSize ( )); Page<EventDetailVO> returnpage = new Page<>(largeScreenCountParam.getPageNum(), largeScreenCountParam.getPageSize());
returnpage.setRecords(collect); returnpage.setRecords(collect);
return returnpage; return returnpage;
} }
@@ -296,30 +311,30 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService {
DateTime end = DateUtil.endOfDay(DateTime.now()); DateTime end = DateUtil.endOfDay(DateTime.now());
DateTime start = DateUtil.beginOfMonth(DateTime.now()); DateTime start = DateUtil.beginOfMonth(DateTime.now());
//根据用户获取当前部门及子部门id //根据用户获取当前部门及子部门id
List<String> deptAndChildren = pqsDeptsService.findDeptAndChildren( largeScreenCountParam.getDeptId()); List<String> deptAndChildren = pqsDeptsService.findDeptAndChildren(largeScreenCountParam.getDeptId());
//获取对应监测点id //获取对应监测点id
List<PqsDeptsline> deptslines = pqsDeptslineService.lambdaQuery().in(PqsDeptsline::getDeptsIndex, deptAndChildren).eq(PqsDeptsline::getSystype, sysTypeZt).list(); List<PqsDeptsline> deptslines = pqsDeptslineService.lambdaQuery().in(PqsDeptsline::getDeptsIndex, deptAndChildren).eq(PqsDeptsline::getSystype, sysTypeZt).list();
List<Integer> deptslineIds = deptslines.stream().map(PqsDeptsline::getLineIndex).distinct().collect(Collectors.toList()); List<Integer> deptslineIds = deptslines.stream().map(PqsDeptsline::getLineIndex).distinct().collect(Collectors.toList());
if(CollUtil.isEmpty(deptslineIds)){ if (CollUtil.isEmpty(deptslineIds)) {
return result; return result;
} }
LambdaQueryWrapper<PqsEventdetail> lambdaQueryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<PqsEventdetail> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.between(PqsEventdetail::getTimeid, start, end) lambdaQueryWrapper.between(PqsEventdetail::getTimeid, start, end)
.in(PqsEventdetail::getLineid,deptslineIds) .in(PqsEventdetail::getLineid, deptslineIds)
.and(wrapper -> wrapper.eq(PqsEventdetail::getLookFlag, 0).or().isNull(PqsEventdetail::getLookFlag)); .and(wrapper -> wrapper.eq(PqsEventdetail::getLookFlag, 0).or().isNull(PqsEventdetail::getLookFlag));
if(Objects.nonNull(largeScreenCountParam.getEventDeep())){ if (Objects.nonNull(largeScreenCountParam.getEventDeep())) {
if(largeScreenCountParam.getEventDeep() == 0){ if (largeScreenCountParam.getEventDeep() == 0) {
lambdaQueryWrapper.ge(PqsEventdetail::getEventvalue,0.5).lt(PqsEventdetail::getEventtype,0.9); lambdaQueryWrapper.ge(PqsEventdetail::getEventvalue, 0.5).lt(PqsEventdetail::getEventtype, 0.9);
}else if(largeScreenCountParam.getEventDeep() == 1){ } else if (largeScreenCountParam.getEventDeep() == 1) {
lambdaQueryWrapper.lt(PqsEventdetail::getEventvalue,0.5); lambdaQueryWrapper.lt(PqsEventdetail::getEventvalue, 0.5);
} }
} }
List<PqsEventdetail> eventList = pqsEventdetailService.list(lambdaQueryWrapper); List<PqsEventdetail> eventList = pqsEventdetailService.list(lambdaQueryWrapper);
if(CollUtil.isNotEmpty(eventList)){ if (CollUtil.isNotEmpty(eventList)) {
List<Integer> ids = eventList.stream().map(PqsEventdetail::getLineid).distinct().collect(Collectors.toList()); List<Integer> ids = eventList.stream().map(PqsEventdetail::getLineid).distinct().collect(Collectors.toList());
List<LedgerBaseInfoDTO> pqLineList = pqLineMapper.getBaseLineInfo(ids); List<LedgerBaseInfoDTO> pqLineList = pqLineMapper.getBaseLineInfo(ids);
Map<Integer,LedgerBaseInfoDTO> ledgerBaseInfoDTOMap = pqLineList.stream().collect(Collectors.toMap(LedgerBaseInfoDTO::getLineId, Function.identity())); Map<Integer, LedgerBaseInfoDTO> ledgerBaseInfoDTOMap = pqLineList.stream().collect(Collectors.toMap(LedgerBaseInfoDTO::getLineId, Function.identity()));
eventList.forEach(it->{ eventList.forEach(it -> {
EventDetailVO eventDetailVO = new EventDetailVO(); EventDetailVO eventDetailVO = new EventDetailVO();
eventDetailVO.setEventdetail_index(it.getEventdetailIndex()); eventDetailVO.setEventdetail_index(it.getEventdetailIndex());
eventDetailVO.setTimeid(it.getTimeid()); eventDetailVO.setTimeid(it.getTimeid());
@@ -327,7 +342,7 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService {
eventDetailVO.setWavetype(it.getWavetype().toString()); eventDetailVO.setWavetype(it.getWavetype().toString());
eventDetailVO.setPersisttime(it.getPersisttime().toString()); eventDetailVO.setPersisttime(it.getPersisttime().toString());
eventDetailVO.setEventvalue(it.getEventvalue()); eventDetailVO.setEventvalue(it.getEventvalue());
if(ledgerBaseInfoDTOMap.containsKey(it.getLineid())){ if (ledgerBaseInfoDTOMap.containsKey(it.getLineid())) {
LedgerBaseInfoDTO ledgerBaseInfoDTO = ledgerBaseInfoDTOMap.get(it.getLineid()); LedgerBaseInfoDTO ledgerBaseInfoDTO = ledgerBaseInfoDTOMap.get(it.getLineid());
eventDetailVO.setLineid(ledgerBaseInfoDTO.getLineId()); eventDetailVO.setLineid(ledgerBaseInfoDTO.getLineId());
eventDetailVO.setPointname(ledgerBaseInfoDTO.getLineName()); eventDetailVO.setPointname(ledgerBaseInfoDTO.getLineName());
@@ -342,7 +357,7 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService {
@Override @Override
public boolean lookEvent(List<String> ids) { public boolean lookEvent(List<String> ids) {
LambdaUpdateWrapper<PqsEventdetail> updateWrapper = new LambdaUpdateWrapper<>(); LambdaUpdateWrapper<PqsEventdetail> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.in(PqsEventdetail::getEventdetailIndex,ids).set(PqsEventdetail::getLookFlag,DataStateEnum.ENABLE.getCode()); updateWrapper.in(PqsEventdetail::getEventdetailIndex, ids).set(PqsEventdetail::getLookFlag, DataStateEnum.ENABLE.getCode());
pqsEventdetailService.update(updateWrapper); pqsEventdetailService.update(updateWrapper);
return true; return true;
} }
@@ -351,32 +366,32 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService {
public List<MapCountVO> mapCount(LargeScreenCountParam largeScreenCountParam) { public List<MapCountVO> mapCount(LargeScreenCountParam largeScreenCountParam) {
List<MapCountVO> result = new ArrayList<>(); List<MapCountVO> result = new ArrayList<>();
//起始时间 //起始时间
LocalDateTime startTime = LocalDateTimeUtil.parse(DateUtil.format(DateUtil.beginOfMonth(new Date()), DatePattern.NORM_DATETIME_FORMATTER),DatePattern.NORM_DATETIME_FORMATTER); LocalDateTime startTime = LocalDateTimeUtil.parse(DateUtil.format(DateUtil.beginOfMonth(new Date()), DatePattern.NORM_DATETIME_FORMATTER), DatePattern.NORM_DATETIME_FORMATTER);
//结束时间 //结束时间
LocalDateTime endTime = LocalDateTimeUtil.parse(DateUtil.format(DateUtil.endOfMonth(new Date()), DatePattern.NORM_DATETIME_FORMATTER),DatePattern.NORM_DATETIME_FORMATTER); LocalDateTime endTime = LocalDateTimeUtil.parse(DateUtil.format(DateUtil.endOfMonth(new Date()), DatePattern.NORM_DATETIME_FORMATTER), DatePattern.NORM_DATETIME_FORMATTER);
//根据用户获取当前部门及子部门id //根据用户获取当前部门及子部门id
List<String> deptAndChildren = pqsDeptsService.findDeptAndChildren( largeScreenCountParam.getDeptId()); List<String> deptAndChildren = pqsDeptsService.findDeptAndChildren(largeScreenCountParam.getDeptId());
//获取对应监测点id //获取对应监测点id
List<PqsDeptsline> deptslines = pqsDeptslineService.lambdaQuery().in(PqsDeptsline::getDeptsIndex, deptAndChildren).eq(PqsDeptsline::getSystype, sysTypeZt).list(); List<PqsDeptsline> deptslines = pqsDeptslineService.lambdaQuery().in(PqsDeptsline::getDeptsIndex, deptAndChildren).eq(PqsDeptsline::getSystype, sysTypeZt).list();
if(CollectionUtils.isEmpty(deptslines)){ if (CollectionUtils.isEmpty(deptslines)) {
throw new BusinessException("部门下暂无监测点"); throw new BusinessException("部门下暂无监测点");
} }
List<PqsDepts> list = pqsDeptsService.lambdaQuery().list(); List<PqsDepts> list = pqsDeptsService.lambdaQuery().list();
Map<String, PqsDepts> stringPqsDeptsMap = list.stream().collect(Collectors.toMap(PqsDepts::getDeptsIndex, Function.identity(), (key1, key2) -> key2)); Map<String, PqsDepts> stringPqsDeptsMap = list.stream().collect(Collectors.toMap(PqsDepts::getDeptsIndex, Function.identity(), (key1, key2) -> key2));
Map<String, List<PqsDeptsline>> collect = deptslines.stream().collect(Collectors.groupingBy(PqsDeptsline::getDeptsIndex)); Map<String, List<PqsDeptsline>> collect = deptslines.stream().collect(Collectors.groupingBy(PqsDeptsline::getDeptsIndex));
collect.forEach((k,v)->{ collect.forEach((k, v) -> {
MapCountVO mapCountVO = new MapCountVO() ; MapCountVO mapCountVO = new MapCountVO();
mapCountVO.setDeptsIndex(k); mapCountVO.setDeptsIndex(k);
mapCountVO.setDeptsName(stringPqsDeptsMap.get(k).getDeptsname()); mapCountVO.setDeptsName(stringPqsDeptsMap.get(k).getDeptsname());
mapCountVO.setLineCount(v.size()); mapCountVO.setLineCount(v.size());
List<Integer> deptslineIds = v.stream().map(PqsDeptsline::getLineIndex).collect(Collectors.toList()); List<Integer> deptslineIds = v.stream().map(PqsDeptsline::getLineIndex).collect(Collectors.toList());
List<PqsEventdetail> eventdetails = pqsEventdetailService.lambdaQuery() List<PqsEventdetail> eventdetails = pqsEventdetailService.lambdaQuery()
.between(PqsEventdetail::getTimeid, startTime,endTime) .between(PqsEventdetail::getTimeid, startTime, endTime)
.in(PqsEventdetail::getLineid,deptslineIds).list(); .in(PqsEventdetail::getLineid, deptslineIds).list();
mapCountVO.setEventCount(eventdetails.size()); mapCountVO.setEventCount(eventdetails.size());
List<PqsEventdetail> noticeEvent = eventdetails.stream().filter(temp ->Objects.equals(temp.getNoticeFlag(),1)).collect(Collectors.toList()); List<PqsEventdetail> noticeEvent = eventdetails.stream().filter(temp -> Objects.equals(temp.getNoticeFlag(), 1)).collect(Collectors.toList());
mapCountVO.setNoticeCount(noticeEvent.size()); mapCountVO.setNoticeCount(noticeEvent.size());
@@ -391,14 +406,19 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService {
EventMsgDetailVO eventMsgDetailVO = new EventMsgDetailVO(); EventMsgDetailVO eventMsgDetailVO = new EventMsgDetailVO();
LambdaQueryWrapper<MessageEventFeedback> lambdaQueryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<MessageEventFeedback> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(MessageEventFeedback::getEventIndex,eventId); lambdaQueryWrapper.eq(MessageEventFeedback::getEventIndex, eventId);
MessageEventFeedback messageEventFeedback = messageEventFeedbackService.getOne(lambdaQueryWrapper); MessageEventFeedback messageEventFeedback = messageEventFeedbackService.getOne(lambdaQueryWrapper);
if(Objects.nonNull(messageEventFeedback)){ if (Objects.nonNull(messageEventFeedback)) {
BeanUtil.copyProperties(messageEventFeedback,eventMsgDetailVO); BeanUtil.copyProperties(messageEventFeedback, eventMsgDetailVO);
if(messageEventFeedback.getIsSensitive() == 1){
PqsEventdetail pqsEventdetail = pqsEventdetailService.lambdaQuery().eq(PqsEventdetail::getEventdetailIndex,eventId).one();
PqLinedetail pqLinedetail = pqLinedetailMapper.selectById(pqsEventdetail.getLineid());
eventMsgDetailVO.setObjName(pqLinedetail.getObjname());
}
} }
LambdaQueryWrapper<MsgEventInfo> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<MsgEventInfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(MsgEventInfo::getEventIndex,eventId); queryWrapper.eq(MsgEventInfo::getEventIndex, eventId);
List<MsgEventInfo> msgEventInfoList = msgEventInfoService.list(queryWrapper); List<MsgEventInfo> msgEventInfoList = msgEventInfoService.list(queryWrapper);
eventMsgDetailVO.setMsgList(msgEventInfoList); eventMsgDetailVO.setMsgList(msgEventInfoList);
@@ -409,41 +429,63 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService {
public List<MsgEventInfo> msgSendList(LargeScreenCountParam largeScreenCountParam) { public List<MsgEventInfo> msgSendList(LargeScreenCountParam largeScreenCountParam) {
List<MsgEventInfo> result = new ArrayList<>(); List<MsgEventInfo> result = new ArrayList<>();
List<Integer> ids = commGeneralService.getLineIdsByDept(largeScreenCountParam); List<Integer> ids = commGeneralService.getLineIdsByDept(largeScreenCountParam);
if(CollUtil.isEmpty(ids)){ if (CollUtil.isEmpty(ids)) {
return result; return result;
} }
List<PqsEventdetail> allEventList = new ArrayList<>(); List<PqsEventdetail> allEventList = new ArrayList<>();
if(ids.size()>1000){ if (ids.size() > 1000) {
List<List<Integer>> listIds = CollUtil.split(ids,1000); List<List<Integer>> listIds = CollUtil.split(ids, 1000);
for(List<Integer> itemIds : listIds){ for (List<Integer> itemIds : listIds) {
List<PqsEventdetail> pqsEventdetailList = pqsEventdetailService.lambdaQuery().in(PqsEventdetail::getLineid,itemIds).select(PqsEventdetail::getEventdetailIndex).list(); List<PqsEventdetail> pqsEventdetailList = pqsEventdetailService.lambdaQuery().in(PqsEventdetail::getLineid, itemIds).select(PqsEventdetail::getEventdetailIndex).list();
allEventList.addAll(pqsEventdetailList); allEventList.addAll(pqsEventdetailList);
} }
}else { } else {
List<PqsEventdetail> pqsEventdetailList = pqsEventdetailService.lambdaQuery().in(PqsEventdetail::getLineid,ids).select(PqsEventdetail::getEventdetailIndex).list(); List<PqsEventdetail> pqsEventdetailList = pqsEventdetailService.lambdaQuery().in(PqsEventdetail::getLineid, ids).select(PqsEventdetail::getEventdetailIndex).list();
allEventList.addAll(pqsEventdetailList); allEventList.addAll(pqsEventdetailList);
} }
if(CollUtil.isEmpty(allEventList)){ if (CollUtil.isEmpty(allEventList)) {
return result; return result;
} }
List<String> eventIds = allEventList.stream().map(PqsEventdetail::getEventdetailIndex).collect(Collectors.toList()); List<String> eventIds = allEventList.stream().map(PqsEventdetail::getEventdetailIndex).collect(Collectors.toList());
if(eventIds.size()>1000){ if (eventIds.size() > 1000) {
List<List<String>> listEven = CollUtil.split(eventIds,1000); List<List<String>> listEven = CollUtil.split(eventIds, 1000);
for(List<String> pList: listEven){ for (List<String> pList : listEven) {
List<MsgEventInfo> msgEventInfoList = msgEventInfoService.lambdaQuery().in(MsgEventInfo::getEventIndex,pList).list(); List<MsgEventInfo> msgEventInfoList = msgEventInfoService.lambdaQuery().in(MsgEventInfo::getEventIndex, pList).list();
result.addAll(msgEventInfoList); result.addAll(msgEventInfoList);
} }
}else { } else {
List<MsgEventInfo> msgEventInfoList = msgEventInfoService.lambdaQuery().in(MsgEventInfo::getEventIndex,eventIds).list(); List<MsgEventInfo> msgEventInfoList = msgEventInfoService.lambdaQuery().in(MsgEventInfo::getEventIndex, eventIds).list();
result.addAll(msgEventInfoList); result.addAll(msgEventInfoList);
} }
result = result.stream().sorted(Comparator.comparing(MsgEventInfo::getSendTime,Comparator.reverseOrder())).collect(Collectors.toList()); result = result.stream().sorted(Comparator.comparing(MsgEventInfo::getSendTime, Comparator.reverseOrder())).collect(Collectors.toList());
if (result.size() > 200) { if (result.size() > 200) {
result = result.subList(0, 200); result = result.subList(0, 200);
} }
return result; return result;
} }
@Override
public Page<MsgEventInfo> hasSendMsgPage(LargeScreenCountParam largeScreenCountParam) {
LambdaQueryWrapper<MsgEventInfo> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.orderByDesc(MsgEventInfo::getSendTime);
return msgEventInfoService.page(new Page<>(PageFactory.getPageNum(largeScreenCountParam),PageFactory.getPageSize(largeScreenCountParam)),lambdaQueryWrapper);
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean msgHandle(MessageEventFeedbackParam messageEventFeedbackParam) {
MessageEventFeedback messageEventFeedback = messageEventFeedbackService.lambdaQuery().eq(MessageEventFeedback::getEventIndex, messageEventFeedbackParam.getEventIndex()).one();
if (Objects.nonNull(messageEventFeedback)) {
throw new BusinessException(CommonResponseEnum.FAIL,"请勿重复处理!");
}
MessageEventFeedback po = new MessageEventFeedback();
BeanUtil.copyProperties(messageEventFeedbackParam, po);
po.setId(IdUtil.simpleUUID());
messageEventFeedbackService.save(po);
pqsEventdetailService.lambdaUpdate().set(PqsEventdetail::getNoticeFlag,DataStateEnum.ENABLE.getCode()).eq(PqsEventdetail::getEventdetailIndex,messageEventFeedbackParam.getEventIndex()).update();
return true;
}
} }

View File

@@ -1,5 +1,6 @@
package com.njcn.gather.event.transientes.utils; package com.njcn.gather.event.transientes.utils;
import com.njcn.gather.event.transientes.security.MyUserDetails;
import io.jsonwebtoken.Claims; import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts; import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm; import io.jsonwebtoken.SignatureAlgorithm;
@@ -16,12 +17,20 @@ import java.util.function.Function;
@Component @Component
public class JwtUtil { public class JwtUtil {
private final String userId = "userId";
private final String userName = "userName";
private final String deptId = "deptId";
private static final Key SECRET_KEY = Keys.secretKeyFor(SignatureAlgorithm.HS256); private static final Key SECRET_KEY = Keys.secretKeyFor(SignatureAlgorithm.HS256);
private static final long EXPIRATION_TIME = 1000 * 60 * 60 * 100000L; // 10小时 private static final long EXPIRATION_TIME = 1000 * 60 * 60 * 100000L; // 10小时
// 生成JWT令牌 // 生成JWT令牌
public String generateToken(UserDetails userDetails) { public String generateToken(MyUserDetails userDetails) {
Map<String, Object> claims = new HashMap<>(); Map<String, Object> claims = new HashMap<>();
claims.put(userId,userDetails.getUserId());
claims.put(userName,userDetails.getUsername());
claims.put(deptId,userDetails.getDeptId());
return createToken(claims, userDetails.getUsername()); return createToken(claims, userDetails.getUsername());
} }
@@ -43,7 +52,17 @@ public class JwtUtil {
// 提取用户名 // 提取用户名
public String extractUsername(String token) { public String extractUsername(String token) {
return extractClaim(token, Claims::getSubject); return extractClaim(token, it->it.get(userName).toString());
}
// 提取用户ID
public String extractUserId(String token) {
return extractClaim(token,it->it.get(userId).toString());
}
// 提取用户部门
public String extractDepartment(String token) {
return extractClaim(token, it->it.get(deptId).toString());
} }
// 提取过期时间 // 提取过期时间