From 6b1303d250f9670fcb62d12a655d4a35e2d86ff1 Mon Sep 17 00:00:00 2001 From: chendaofei <857448963@qq.com> Date: Wed, 25 Jun 2025 15:44:43 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=B4=E6=97=B6=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../event/devcie/mapper/PqLineMapper.java | 7 +++ .../devcie/mapper/mappering/PqLineMapper.xml | 24 +++++++++ .../devcie/pojo/dto/LedgerBaseInfoDTO.java | 30 +++++++++++ .../LargeScreenCountController.java | 4 +- .../transientes/filter/JwtRequestFilter.java | 4 +- .../mapper/mapping/PqsDeptsMapper.xml | 1 + .../transientes/pojo/po/PqsEventdetail.java | 2 +- .../transientes/pojo/vo/EventDetailVO.java | 24 +++++++++ .../security/MyUserDetailsService.java | 7 ++- .../transientes/security/SecurityConfig.java | 3 +- .../service/CommGeneralService.java | 37 +++++++++++++ .../impl/LargeScreenCountServiceImpl.java | 54 ++++++++++++++++--- .../websocket/WebSocketServer.java | 14 +++-- 13 files changed, 192 insertions(+), 19 deletions(-) create mode 100644 event_smart/src/main/java/com/njcn/gather/event/devcie/pojo/dto/LedgerBaseInfoDTO.java create mode 100644 event_smart/src/main/java/com/njcn/gather/event/transientes/service/CommGeneralService.java diff --git a/event_smart/src/main/java/com/njcn/gather/event/devcie/mapper/PqLineMapper.java b/event_smart/src/main/java/com/njcn/gather/event/devcie/mapper/PqLineMapper.java index 6ffa6809..989856ed 100644 --- a/event_smart/src/main/java/com/njcn/gather/event/devcie/mapper/PqLineMapper.java +++ b/event_smart/src/main/java/com/njcn/gather/event/devcie/mapper/PqLineMapper.java @@ -1,7 +1,12 @@ package com.njcn.gather.event.devcie.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.njcn.gather.event.devcie.pojo.dto.LedgerBaseInfoDTO; import com.njcn.gather.event.devcie.pojo.po.PqLine; +import org.apache.ibatis.annotations.Param; +import org.springframework.security.core.parameters.P; + +import java.util.List; /** * @@ -12,4 +17,6 @@ import com.njcn.gather.event.devcie.pojo.po.PqLine; * @version V1.0.0 */ public interface PqLineMapper extends BaseMapper { + + List getBaseLineInfo(@Param("ids")List ids); } \ No newline at end of file diff --git a/event_smart/src/main/java/com/njcn/gather/event/devcie/mapper/mappering/PqLineMapper.xml b/event_smart/src/main/java/com/njcn/gather/event/devcie/mapper/mappering/PqLineMapper.xml index bcb630a1..671e1283 100644 --- a/event_smart/src/main/java/com/njcn/gather/event/devcie/mapper/mappering/PqLineMapper.xml +++ b/event_smart/src/main/java/com/njcn/gather/event/devcie/mapper/mappering/PqLineMapper.xml @@ -27,4 +27,28 @@ LINE_INDEX, GD_INDEX, SUB_INDEX, SUBV_INDEX, DEV_INDEX, "NAME", PT1, PT2, CT1, CT2, DEVCMP, DLCMP, JZCMP, XYCMP, SUBV_NO, "SCALE", SUBV_NAME + + + \ No newline at end of file diff --git a/event_smart/src/main/java/com/njcn/gather/event/devcie/pojo/dto/LedgerBaseInfoDTO.java b/event_smart/src/main/java/com/njcn/gather/event/devcie/pojo/dto/LedgerBaseInfoDTO.java new file mode 100644 index 00000000..3ba9731f --- /dev/null +++ b/event_smart/src/main/java/com/njcn/gather/event/devcie/pojo/dto/LedgerBaseInfoDTO.java @@ -0,0 +1,30 @@ +package com.njcn.gather.event.devcie.pojo.dto; + +import lombok.Data; + +/** + * @Author: cdf + * @CreateTime: 2025-06-25 + * @Description: + */ +@Data +public class LedgerBaseInfoDTO { + + private Integer lineId; + + private String lineName; + + private Integer busBarId; + + private String busBarName; + + private Integer devId; + + private String devName; + + private String objName; + + private Integer stationId; + + private String stationName; +} diff --git a/event_smart/src/main/java/com/njcn/gather/event/transientes/controller/LargeScreenCountController.java b/event_smart/src/main/java/com/njcn/gather/event/transientes/controller/LargeScreenCountController.java index ecab5527..3b6facb3 100644 --- a/event_smart/src/main/java/com/njcn/gather/event/transientes/controller/LargeScreenCountController.java +++ b/event_smart/src/main/java/com/njcn/gather/event/transientes/controller/LargeScreenCountController.java @@ -83,11 +83,11 @@ public class LargeScreenCountController extends BaseController { @OperateInfo @PostMapping("/noDealEventList") - @ApiOperation("暂降事件列表") + @ApiOperation("未处理暂降事件列表") @ApiImplicitParam(name = "largeScreenCountParam", value = "查询参数", required = true) public HttpResult> noDealEventList(@RequestBody LargeScreenCountParam largeScreenCountParam) { String methodDescribe = getMethodDescribe("noDealEventList"); - List result = largeScreenCountService.eventList(largeScreenCountParam); + List result = largeScreenCountService.noDealEventList(largeScreenCountParam); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); } diff --git a/event_smart/src/main/java/com/njcn/gather/event/transientes/filter/JwtRequestFilter.java b/event_smart/src/main/java/com/njcn/gather/event/transientes/filter/JwtRequestFilter.java index 44c40f86..f1b1563f 100644 --- a/event_smart/src/main/java/com/njcn/gather/event/transientes/filter/JwtRequestFilter.java +++ b/event_smart/src/main/java/com/njcn/gather/event/transientes/filter/JwtRequestFilter.java @@ -37,7 +37,7 @@ public class JwtRequestFilter extends OncePerRequestFilter { throws ServletException, IOException { System.out.println("请求路径"+request.getRequestURI()); - final String authorizationHeader = request.getHeader("Authorization"); + /* final String authorizationHeader = request.getHeader("Authorization"); String username = null; String jwt = null; if (authorizationHeader != null && authorizationHeader.startsWith("Bearer ")) { @@ -65,7 +65,7 @@ public class JwtRequestFilter extends OncePerRequestFilter { usernamePasswordAuthenticationToken.setDetails(new WebAuthenticationDetailsSource().buildDetails(request)); SecurityContextHolder.getContext().setAuthentication(usernamePasswordAuthenticationToken); } - } + }*/ chain.doFilter(request, response); } diff --git a/event_smart/src/main/java/com/njcn/gather/event/transientes/mapper/mapping/PqsDeptsMapper.xml b/event_smart/src/main/java/com/njcn/gather/event/transientes/mapper/mapping/PqsDeptsMapper.xml index cc9dcadc..86ab9179 100644 --- a/event_smart/src/main/java/com/njcn/gather/event/transientes/mapper/mapping/PqsDeptsMapper.xml +++ b/event_smart/src/main/java/com/njcn/gather/event/transientes/mapper/mapping/PqsDeptsMapper.xml @@ -26,5 +26,6 @@ FROM PQS_DEPTS START WITH DEPTS_INDEX = #{deptId} CONNECT BY PRIOR DEPTS_INDEX = PARENTNODEID + and state = 1 \ No newline at end of file diff --git a/event_smart/src/main/java/com/njcn/gather/event/transientes/pojo/po/PqsEventdetail.java b/event_smart/src/main/java/com/njcn/gather/event/transientes/pojo/po/PqsEventdetail.java index c6396210..dfe56b43 100644 --- a/event_smart/src/main/java/com/njcn/gather/event/transientes/pojo/po/PqsEventdetail.java +++ b/event_smart/src/main/java/com/njcn/gather/event/transientes/pojo/po/PqsEventdetail.java @@ -25,7 +25,7 @@ public class PqsEventdetail { private String eventdetailIndex; @TableField(value = "LINEID") - private BigDecimal lineid; + private Integer lineid; @TableField(value = "TIMEID") private LocalDateTime timeid; diff --git a/event_smart/src/main/java/com/njcn/gather/event/transientes/pojo/vo/EventDetailVO.java b/event_smart/src/main/java/com/njcn/gather/event/transientes/pojo/vo/EventDetailVO.java index 194973f6..1c586aad 100644 --- a/event_smart/src/main/java/com/njcn/gather/event/transientes/pojo/vo/EventDetailVO.java +++ b/event_smart/src/main/java/com/njcn/gather/event/transientes/pojo/vo/EventDetailVO.java @@ -2,6 +2,9 @@ package com.njcn.gather.event.transientes.pojo.vo; import lombok.Data; +import java.math.BigDecimal; +import java.time.LocalDateTime; + /** * Description: * Date: 2025/06/20 下午 2:50【需求编号】 @@ -11,4 +14,25 @@ import lombok.Data; */ @Data public class EventDetailVO { + + private String eventdetailIndex; + + private LocalDateTime timeid; + + private BigDecimal ms; + + private Short wavetype; + + private Double eventvalue; + + private Integer lookFlag; + + private Integer noticeFlag; + + private String lineName; + + + private String stationName; + + private String objName; } diff --git a/event_smart/src/main/java/com/njcn/gather/event/transientes/security/MyUserDetailsService.java b/event_smart/src/main/java/com/njcn/gather/event/transientes/security/MyUserDetailsService.java index 3b5a9172..10e27fb9 100644 --- a/event_smart/src/main/java/com/njcn/gather/event/transientes/security/MyUserDetailsService.java +++ b/event_smart/src/main/java/com/njcn/gather/event/transientes/security/MyUserDetailsService.java @@ -29,7 +29,12 @@ public class MyUserDetailsService implements UserDetailsService { String encodedPassword = passwordEncoder.encode("@#001njcnpqs"); return new User("screen", encodedPassword, new ArrayList<>()); - } else { + } else if("test".equals(username)){ + PasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); + String encodedPassword = passwordEncoder.encode("@#001njcnpqs"); + return new User("test", encodedPassword, + new ArrayList<>()); + }else { throw new UsernameNotFoundException("User not found with username: " + username); } } diff --git a/event_smart/src/main/java/com/njcn/gather/event/transientes/security/SecurityConfig.java b/event_smart/src/main/java/com/njcn/gather/event/transientes/security/SecurityConfig.java index 524bfe25..8e4cbe65 100644 --- a/event_smart/src/main/java/com/njcn/gather/event/transientes/security/SecurityConfig.java +++ b/event_smart/src/main/java/com/njcn/gather/event/transientes/security/SecurityConfig.java @@ -34,7 +34,8 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { protected void configure(HttpSecurity http) throws Exception { http.csrf().disable() .authorizeRequests() - .antMatchers("/cn_authenticate","/ws/**").permitAll() // 允许访问认证接口 + // .antMatchers("/cn_authenticate","/ws/**").permitAll() // 允许访问认证接口 + .antMatchers("/**").permitAll() // 允许访问认证接口 .anyRequest().authenticated() .and() .sessionManagement() diff --git a/event_smart/src/main/java/com/njcn/gather/event/transientes/service/CommGeneralService.java b/event_smart/src/main/java/com/njcn/gather/event/transientes/service/CommGeneralService.java new file mode 100644 index 00000000..e2ba3b37 --- /dev/null +++ b/event_smart/src/main/java/com/njcn/gather/event/transientes/service/CommGeneralService.java @@ -0,0 +1,37 @@ +package com.njcn.gather.event.transientes.service; + +import com.njcn.gather.event.devcie.pojo.po.PqsDeptsline; +import com.njcn.gather.event.devcie.service.PqsDeptslineService; +import com.njcn.gather.event.transientes.pojo.param.LargeScreenCountParam; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * @Author: cdf + * @CreateTime: 2025-06-25 + * @Description: + */ +@Service +@RequiredArgsConstructor +public class CommGeneralService { + @Value("${SYS_TYPE_ZT}") + private String sysTypeZt; + + private final PqsDeptslineService pqsDeptslineService; + private final PqsDeptsService pqsDeptsService; + + + public List getLineIdsByDept(LargeScreenCountParam largeScreenCountParam){ + List deptAndChildren = pqsDeptsService.findDeptAndChildren(largeScreenCountParam.getDeptId()); + List deptslines = pqsDeptslineService.lambdaQuery().in(PqsDeptsline::getDeptsIndex, deptAndChildren).eq(PqsDeptsline::getSystype, sysTypeZt).list(); + List deptslineIds = deptslines.stream().map(PqsDeptsline::getLineIndex).collect(Collectors.toList()); + return deptslineIds; + + } + + +} diff --git a/event_smart/src/main/java/com/njcn/gather/event/transientes/service/impl/LargeScreenCountServiceImpl.java b/event_smart/src/main/java/com/njcn/gather/event/transientes/service/impl/LargeScreenCountServiceImpl.java index baf27e56..edab0b2a 100644 --- a/event_smart/src/main/java/com/njcn/gather/event/transientes/service/impl/LargeScreenCountServiceImpl.java +++ b/event_smart/src/main/java/com/njcn/gather/event/transientes/service/impl/LargeScreenCountServiceImpl.java @@ -1,10 +1,18 @@ package com.njcn.gather.event.transientes.service.impl; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.github.yulichang.wrapper.segments.Fun; +import com.njcn.common.pojo.enums.common.DataStateEnum; import com.njcn.common.pojo.exception.BusinessException; +import com.njcn.gather.event.devcie.mapper.PqLineMapper; +import com.njcn.gather.event.devcie.pojo.dto.LedgerBaseInfoDTO; 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.PqLine; @@ -25,7 +33,9 @@ import org.springframework.stereotype.Service; import java.time.LocalDate; import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -44,6 +54,7 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService { private final PqLineService pqLineService; private final PqDeviceService pqDeviceService; private final PqsEventdetailService pqsEventdetailService; + private final PqLineMapper pqLineMapper; @Value("${SYS_TYPE_ZT}") private String sysTypeZt; @Override @@ -186,16 +197,45 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService { @Override public List noDealEventList(LargeScreenCountParam largeScreenCountParam) { + List result = new ArrayList<>(); - if(Objects.isNull(largeScreenCountParam.getEventDeep())){ - + DateTime end = DateUtil.endOfDay(DateTime.now()); + DateTime start = DateUtil.beginOfMonth(DateTime.now()); + //根据用户获取当前部门及子部门id + List deptAndChildren = pqsDeptsService.findDeptAndChildren( largeScreenCountParam.getDeptId()); + //获取对应监测点id + List deptslines = pqsDeptslineService.lambdaQuery().in(PqsDeptsline::getDeptsIndex, deptAndChildren).eq(PqsDeptsline::getSystype, sysTypeZt).list(); + List deptslineIds = deptslines.stream().map(PqsDeptsline::getLineIndex).distinct().collect(Collectors.toList()); + if(CollUtil.isEmpty(deptslineIds)){ + return result; } -/* eventdetails = pqsEventdetailService.lambdaQuery() - .between(PqsEventdetail::getTimeid, startTime, endTime) + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.between(PqsEventdetail::getTimeid, start, end) .in(PqsEventdetail::getLineid,deptslineIds) - .eq(PqsEventdetail::getLookFlag,largeScreenCountParam.getEventtype()).list();*/ - - return null; + .and(wrapper -> wrapper.eq(PqsEventdetail::getLookFlag, 0).or().isNull(PqsEventdetail::getLookFlag)); + if(Objects.nonNull(largeScreenCountParam.getEventDeep())){ + if(largeScreenCountParam.getEventDeep() == 0){ + lambdaQueryWrapper.ge(PqsEventdetail::getEventvalue,0.5).lt(PqsEventdetail::getEventtype,0.9); + }else if(largeScreenCountParam.getEventDeep() == 1){ + lambdaQueryWrapper.lt(PqsEventdetail::getEventvalue,0.5); + } + } + List eventList = pqsEventdetailService.list(lambdaQueryWrapper); + if(CollUtil.isNotEmpty(eventList)){ + List pqLineList = pqLineMapper.getBaseLineInfo(deptslineIds); + Map ledgerBaseInfoDTOMap = pqLineList.stream().collect(Collectors.toMap(LedgerBaseInfoDTO::getLineId, Function.identity())); + eventList.forEach(it->{ + EventDetailVO eventDetailVO = new EventDetailVO(); + BeanUtil.copyProperties(it,eventDetailVO); + if(ledgerBaseInfoDTOMap.containsKey(it.getLineid())){ + LedgerBaseInfoDTO ledgerBaseInfoDTO = ledgerBaseInfoDTOMap.get(it.getLineid()); + eventDetailVO.setLineName(ledgerBaseInfoDTO.getLineName()); + eventDetailVO.setStationName(ledgerBaseInfoDTO.getStationName()); + } + result.add(eventDetailVO); + }); + } + return result; } diff --git a/event_smart/src/main/java/com/njcn/gather/event/transientes/websocket/WebSocketServer.java b/event_smart/src/main/java/com/njcn/gather/event/transientes/websocket/WebSocketServer.java index 488f7800..065dde5c 100644 --- a/event_smart/src/main/java/com/njcn/gather/event/transientes/websocket/WebSocketServer.java +++ b/event_smart/src/main/java/com/njcn/gather/event/transientes/websocket/WebSocketServer.java @@ -100,15 +100,19 @@ public class WebSocketServer { } } + private final Object lock = new Object(); + public void sendMessageToAll(String message) { sessions.forEach((userId, session) -> { - System.out.println("给用户推送消息"+userId); + System.out.println("给用户推送消息" + userId); if (session.isOpen()) { - try { - session.getBasicRemote().sendText(message); - } catch (IOException e) { - System.out.println("发送消息给用户 " + userId + " 失败: " + e.getMessage()); + synchronized (lock) { + try { + session.getBasicRemote().sendText(message); + } catch (IOException e) { + System.out.println("发送消息给用户 " + userId + " 失败: " + e.getMessage()); + } } } });