From ba2fec5ac0de312bde261f389b70df10d56894fc Mon Sep 17 00:00:00 2001 From: hzj <826100833@qq.com> Date: Mon, 28 Jul 2025 14:34:36 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=8C=E6=AC=A1=E7=89=88=E6=9C=AC=E6=8F=90?= =?UTF-8?q?=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../event/devcie/config/PqlineCache.java | 48 ++++++++++++ .../devcie/mapper/mapping/PqDeviceMapper.xml | 1 + .../event/devcie/pojo/dto/DeviceDTO.java | 2 + .../gather/event/devcie/pojo/po/PqDevice.java | 10 +-- .../gather/event/devcie/pojo/po/PqLine.java | 2 +- .../LargeScreenCountController.java | 31 ++++++++ .../transientes/pojo/po/PqDevicedetail.java | 6 +- .../event/transientes/pojo/po/PqsDepts.java | 6 +- .../transientes/pojo/po/PqsEventdetail.java | 4 +- .../transientes/pojo/vo/DeviceCountVO.java | 18 +++++ .../transientes/pojo/vo/RegionDevCountVO.java | 30 ++++++++ .../transientes/security/SecurityConfig.java | 4 +- .../service/LargeScreenCountService.java | 6 ++ .../impl/LargeScreenCountServiceImpl.java | 73 ++++++++++++++++++- 14 files changed, 224 insertions(+), 17 deletions(-) create mode 100644 event_smart/src/main/java/com/njcn/gather/event/devcie/config/PqlineCache.java create mode 100644 event_smart/src/main/java/com/njcn/gather/event/transientes/pojo/vo/DeviceCountVO.java create mode 100644 event_smart/src/main/java/com/njcn/gather/event/transientes/pojo/vo/RegionDevCountVO.java diff --git a/event_smart/src/main/java/com/njcn/gather/event/devcie/config/PqlineCache.java b/event_smart/src/main/java/com/njcn/gather/event/devcie/config/PqlineCache.java new file mode 100644 index 00000000..9ceed251 --- /dev/null +++ b/event_smart/src/main/java/com/njcn/gather/event/devcie/config/PqlineCache.java @@ -0,0 +1,48 @@ +package com.njcn.gather.event.devcie.config; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.njcn.gather.event.devcie.mapper.PqLineMapper; +import com.njcn.gather.event.devcie.pojo.po.PqLine; +import com.njcn.redis.utils.RedisUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import javax.annotation.PreDestroy; +import java.util.List; +import java.util.Set; + +/** + * Description: + * Date: 2025/07/28 上午 9:32【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Component +@Slf4j +public class PqlineCache { + @Autowired + private PqLineMapper pqLineMapper; + @Autowired + private RedisUtil redisUtil; + + + @PostConstruct + public void init() { + log.info("系统启动中。。。加载pqline"); + List pqLines = pqLineMapper.selectList(null); + redisUtil.saveByKey("pqLineList",pqLines); + + } + + @PreDestroy + public void destroy() { + log.info("系统运行结束"); + redisUtil.delete("pqLineList"); + } + +} diff --git a/event_smart/src/main/java/com/njcn/gather/event/devcie/mapper/mapping/PqDeviceMapper.xml b/event_smart/src/main/java/com/njcn/gather/event/devcie/mapper/mapping/PqDeviceMapper.xml index e577f06f..969596e3 100644 --- a/event_smart/src/main/java/com/njcn/gather/event/devcie/mapper/mapping/PqDeviceMapper.xml +++ b/event_smart/src/main/java/com/njcn/gather/event/devcie/mapper/mapping/PqDeviceMapper.xml @@ -35,6 +35,7 @@ pq_device.UpdateTime updateTime, pq_device.DevFlag devFlag, pq_device.IP ip, + pq_device.status status, PQ_SUBSTATION.sub_index stationId, PQ_SUBSTATION.name stationName, PQ_GDINFORMATION.Name gdName diff --git a/event_smart/src/main/java/com/njcn/gather/event/devcie/pojo/dto/DeviceDTO.java b/event_smart/src/main/java/com/njcn/gather/event/devcie/pojo/dto/DeviceDTO.java index 8e4561a0..1f2f0c83 100644 --- a/event_smart/src/main/java/com/njcn/gather/event/devcie/pojo/dto/DeviceDTO.java +++ b/event_smart/src/main/java/com/njcn/gather/event/devcie/pojo/dto/DeviceDTO.java @@ -25,4 +25,6 @@ public class DeviceDTO { private String ip; //通讯状态 private Integer runFlag=0; + //装置通讯状态(0:中断;1:正常) + private Integer status; } diff --git a/event_smart/src/main/java/com/njcn/gather/event/devcie/pojo/po/PqDevice.java b/event_smart/src/main/java/com/njcn/gather/event/devcie/pojo/po/PqDevice.java index 368fce66..e3e1411b 100644 --- a/event_smart/src/main/java/com/njcn/gather/event/devcie/pojo/po/PqDevice.java +++ b/event_smart/src/main/java/com/njcn/gather/event/devcie/pojo/po/PqDevice.java @@ -51,7 +51,7 @@ public class PqDevice { * 靠靠靠(0:靠;1:靠) */ @TableField(value = "\"STATUS\"") - private Short status; + private Integer status; /** * (靠縋QS_Dicdata)靠靠Guid @@ -87,7 +87,7 @@ public class PqDevice { * 靠靠(0:靠;1:靠;2:靠) */ @TableField(value = "DEVFLAG") - private Short devflag; + private Integer devflag; /** * 靠靠?靠3ds靠 @@ -111,17 +111,17 @@ public class PqDevice { * 靠靠(0:靠靠;1:靠靠) */ @TableField(value = "DEVMODEL") - private Short devmodel; + private Integer devmodel; /** * 靠靠? */ @TableField(value = "CALLFLAG") - private Short callflag; + private Integer callflag; /** * 靠靠(0:靠靠;1:靠靠;2:靠靠) */ @TableField(value = "DATATYPE") - private Short datatype; + private Integer datatype; } \ No newline at end of file diff --git a/event_smart/src/main/java/com/njcn/gather/event/devcie/pojo/po/PqLine.java b/event_smart/src/main/java/com/njcn/gather/event/devcie/pojo/po/PqLine.java index 41ed47b8..a629dd8e 100644 --- a/event_smart/src/main/java/com/njcn/gather/event/devcie/pojo/po/PqLine.java +++ b/event_smart/src/main/java/com/njcn/gather/event/devcie/pojo/po/PqLine.java @@ -110,7 +110,7 @@ public class PqLine { * 靠?靠靠靠靠靠靠? */ @TableField(value = "SUBV_NO") - private Short subvNo; + private Integer subvNo; /** * (靠PQS_Dictionary?靠靠Guid 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 8dd3b387..e3f31ae5 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 @@ -5,6 +5,7 @@ import com.njcn.common.pojo.annotation.OperateInfo; import com.njcn.common.pojo.constant.OperateType; import com.njcn.common.pojo.enums.response.CommonResponseEnum; import com.njcn.common.pojo.response.HttpResult; +import com.njcn.gather.event.devcie.pojo.dto.DeviceDTO; 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; @@ -180,5 +181,35 @@ public class LargeScreenCountController extends BaseController { } + @OperateInfo + @PostMapping("/devFlagCount") + @ApiOperation("终端运行统计") + @ApiImplicitParam(name = "largeScreenCountParam", value = "查询参数", required = true) + public HttpResult devFlagCount(@RequestBody LargeScreenCountParam largeScreenCountParam) { + String methodDescribe = getMethodDescribe("devFlagCount"); + DeviceCountVO deviceCountVO = largeScreenCountService.devFlagCount(largeScreenCountParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, deviceCountVO, methodDescribe); + } + @OperateInfo + @PostMapping("/devDetail") + @ApiOperation("终端运行统计") + @ApiImplicitParam(name = "largeScreenCountParam", value = "查询参数", required = true) + public HttpResult> devDetail(@RequestBody LargeScreenCountParam largeScreenCountParam) { + String methodDescribe = getMethodDescribe("devDetail"); + List deviceDTOList = largeScreenCountService.devDetail(largeScreenCountParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, deviceDTOList, methodDescribe); + } + + @OperateInfo + @PostMapping("/regionDevCount") + @ApiOperation("区域终端统计") + @ApiImplicitParam(name = "largeScreenCountParam", value = "查询参数", required = true) + public HttpResult> regionDevCount(@RequestBody LargeScreenCountParam largeScreenCountParam) { + String methodDescribe = getMethodDescribe("regionDevCount"); + List result = largeScreenCountService.regionDevCount(largeScreenCountParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); + } + + } diff --git a/event_smart/src/main/java/com/njcn/gather/event/transientes/pojo/po/PqDevicedetail.java b/event_smart/src/main/java/com/njcn/gather/event/transientes/pojo/po/PqDevicedetail.java index 8e7f3f9a..a2852c06 100644 --- a/event_smart/src/main/java/com/njcn/gather/event/transientes/pojo/po/PqDevicedetail.java +++ b/event_smart/src/main/java/com/njcn/gather/event/transientes/pojo/po/PqDevicedetail.java @@ -39,7 +39,7 @@ public class PqDevicedetail { * 靠靠(0:靠 1:靠) */ @TableField(value = "CHECKFLAG") - private Short checkflag; + private Integer checkflag; /** * 靠靠靠 @@ -66,10 +66,10 @@ public class PqDevicedetail { private Integer newtraffic; @TableField(value = "ELECTROPLATE") - private Short electroplate; + private Integer electroplate; @TableField(value = "ONTIME") - private Short ontime; + private Integer ontime; /** * 合同 diff --git a/event_smart/src/main/java/com/njcn/gather/event/transientes/pojo/po/PqsDepts.java b/event_smart/src/main/java/com/njcn/gather/event/transientes/pojo/po/PqsDepts.java index f14f66c6..3ff734cf 100644 --- a/event_smart/src/main/java/com/njcn/gather/event/transientes/pojo/po/PqsDepts.java +++ b/event_smart/src/main/java/com/njcn/gather/event/transientes/pojo/po/PqsDepts.java @@ -39,7 +39,7 @@ public class PqsDepts { * 排序 */ @TableField(value = "DEPTS_DESC") - private Short deptsDesc; + private Integer deptsDesc; /** * (关联表PQS_User)用户表Guid @@ -63,7 +63,7 @@ public class PqsDepts { * 角色状态0:删除;1:正常; */ @TableField(value = "\"STATE\"") - private Short state; + private Integer state; /** * 行政区域 @@ -72,7 +72,7 @@ public class PqsDepts { private String area; @TableField(value = "CUSTOM_DEPT") - private Short customDept; + private Integer customDept; @TableField(value = "PARENTNODEID") private String parentnodeid; 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 618d1992..029c3f5e 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 @@ -65,13 +65,13 @@ public class PqsEventdetail { private LocalDateTime dealtime; @TableField(value = "DEALFLAG") - private Short dealflag; + private Integer dealflag; @TableField(value = "NUM") private BigDecimal num; @TableField(value = "FILEFLAG") - private Short fileflag; + private Integer fileflag; @TableField(value = "FIRSTTIME") private LocalDateTime firsttime; diff --git a/event_smart/src/main/java/com/njcn/gather/event/transientes/pojo/vo/DeviceCountVO.java b/event_smart/src/main/java/com/njcn/gather/event/transientes/pojo/vo/DeviceCountVO.java new file mode 100644 index 00000000..751d0ad8 --- /dev/null +++ b/event_smart/src/main/java/com/njcn/gather/event/transientes/pojo/vo/DeviceCountVO.java @@ -0,0 +1,18 @@ +package com.njcn.gather.event.transientes.pojo.vo; + +import lombok.Data; + +/** + * Description: + * Date: 2025/07/28 上午 8:50【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Data +public class DeviceCountVO { + private Integer allCount; + private Integer onLine; + private Integer offLine; + +} diff --git a/event_smart/src/main/java/com/njcn/gather/event/transientes/pojo/vo/RegionDevCountVO.java b/event_smart/src/main/java/com/njcn/gather/event/transientes/pojo/vo/RegionDevCountVO.java new file mode 100644 index 00000000..d37d86e1 --- /dev/null +++ b/event_smart/src/main/java/com/njcn/gather/event/transientes/pojo/vo/RegionDevCountVO.java @@ -0,0 +1,30 @@ +package com.njcn.gather.event.transientes.pojo.vo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; + +/** + * Description: + * Date: 2025/07/28 上午 10:26【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Data +public class RegionDevCountVO { + + /** + * 部门表Guid + */ + private String deptsIndex; + + /** + * 部门名称 + */ + private String deptsname; + private Integer allCount; + private Integer onLine; + private Integer offLine; +} 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 933fa497..93011561 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 @@ -35,13 +35,13 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { http.csrf().disable() .authorizeRequests() .antMatchers("/cn_authenticate","/ws/**","/accept/testEvent").permitAll() // 允许访问认证接口 - //.antMatchers("/**").permitAll() // 允许访问认证接口 + .antMatchers("/**").permitAll() // 允许访问认证接口 .anyRequest().authenticated() .and() .sessionManagement() .sessionCreationPolicy(SessionCreationPolicy.STATELESS); // 使用无状态会话 - http.addFilterBefore(jwtRequestFilter, UsernamePasswordAuthenticationFilter.class); +// http.addFilterBefore(jwtRequestFilter, UsernamePasswordAuthenticationFilter.class); } @Bean diff --git a/event_smart/src/main/java/com/njcn/gather/event/transientes/service/LargeScreenCountService.java b/event_smart/src/main/java/com/njcn/gather/event/transientes/service/LargeScreenCountService.java index 6d35647e..a8241034 100644 --- a/event_smart/src/main/java/com/njcn/gather/event/transientes/service/LargeScreenCountService.java +++ b/event_smart/src/main/java/com/njcn/gather/event/transientes/service/LargeScreenCountService.java @@ -1,6 +1,7 @@ package com.njcn.gather.event.transientes.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.njcn.gather.event.devcie.pojo.dto.DeviceDTO; 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; @@ -48,4 +49,9 @@ public interface LargeScreenCountService { Page eventTablePage(LargeScreenCountParam largeScreenCountParam); + DeviceCountVO devFlagCount(LargeScreenCountParam largeScreenCountParam); + + List devDetail(LargeScreenCountParam largeScreenCountParam); + + List regionDevCount(LargeScreenCountParam largeScreenCountParam); } 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 3d554985..3c9f814a 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 @@ -35,11 +35,13 @@ import com.njcn.gather.event.devcie.service.*; import com.njcn.gather.event.transientes.service.*; import com.njcn.gather.event.devcie.service.PqsDeptslineService; import com.njcn.gather.event.transientes.utils.JwtUtil; +import com.njcn.redis.utils.RedisUtil; import com.njcn.web.factory.PageFactory; import io.swagger.models.auth.In; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -82,7 +84,7 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService { private final PqsUsersetService pqsUsersetService; private final PqsUserService pqsUserService; private final PqLinedetailMapper pqLinedetailMapper; - + private final RedisUtil redisUtil; @Value("${SYS_TYPE_ZT}") private String sysTypeZt; @@ -868,6 +870,75 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService { return result; } + @Override + public DeviceCountVO devFlagCount(LargeScreenCountParam largeScreenCountParam) { + DeviceCountVO deviceCountVO = new DeviceCountVO(); + List pqLineList = (List) redisUtil.getObjectByKey("pqLineList"); + 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()); + pqLineList = pqLineList.stream().filter(temp->deptslineIds.contains(temp.getLineIndex())).collect(Collectors.toList()); + List devIndexs = pqLineList.stream().map(PqLine::getDevIndex).collect(Collectors.toList()); + + //在运总数 + List list = pqDeviceService.lambdaQuery().in(PqDevice::getDevIndex, devIndexs).eq(PqDevice::getDevflag, 0).list(); + + long onLine = list.stream().filter(temp -> Objects.equals(temp.getStatus(), 1)).count(); + long Offline = list.stream().filter(temp -> Objects.equals(temp.getStatus(), 0)).count(); + deviceCountVO.setAllCount(list.size()); + deviceCountVO.setOnLine((int) onLine); + deviceCountVO.setOffLine((int) Offline); + + return deviceCountVO; + } + + @Override + public List devDetail(LargeScreenCountParam largeScreenCountParam) { + DeviceCountVO deviceCountVO = new DeviceCountVO(); + List pqLineList = (List) redisUtil.getObjectByKey("pqLineList"); + 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()); + pqLineList = pqLineList.stream().filter(temp->deptslineIds.contains(temp.getLineIndex())).collect(Collectors.toList()); + List devIndexs = pqLineList.stream().map(PqLine::getDevIndex).collect(Collectors.toList()); + + + List deviceDTOList = pqDeviceService.queryListByIds(devIndexs); + deviceDTOList = deviceDTOList.stream().filter(temp->Objects.equals(temp.getDevFlag(),0)).collect(Collectors.toList()); + return deviceDTOList; + } + + @Override + public List regionDevCount(LargeScreenCountParam largeScreenCountParam) { + List result = new ArrayList<>(); + List pqLineList = (List) redisUtil.getObjectByKey("pqLineList"); + List deptAndChildren = pqsDeptsService.findDeptAndChildren(largeScreenCountParam.getDeptId()); + if(deptAndChildren.size()>1){ + deptAndChildren.remove(largeScreenCountParam.getDeptId()); + } + List deptslines = pqsDeptslineService.lambdaQuery().in(PqsDeptsline::getDeptsIndex, deptAndChildren).eq(PqsDeptsline::getSystype, sysTypeZt).list(); + List list = pqsDeptsService.lambdaQuery().in(PqsDepts::getDeptsIndex, deptAndChildren).eq(PqsDepts::getState, 1).list(); + list.forEach(temp->{ + RegionDevCountVO regionDevCountVO = new RegionDevCountVO(); + regionDevCountVO.setDeptsIndex(temp.getDeptsIndex()); + regionDevCountVO.setDeptsname(temp.getDeptsname()); + List deptslineIds = deptslines.stream().filter(deptsline->Objects.equals(deptsline.getDeptsIndex(),temp.getDeptsIndex())).map(PqsDeptsline::getLineIndex).collect(Collectors.toList()); + List collect = pqLineList.stream().filter(pqLine -> deptslineIds.contains(pqLine.getLineIndex())).collect(Collectors.toList()); + List devIndexs = collect.stream().map(PqLine::getDevIndex).collect(Collectors.toList()); + + //在运总数 + List pqDeviceList = pqDeviceService.lambdaQuery().in(PqDevice::getDevIndex, devIndexs).eq(PqDevice::getDevflag, 0).list(); + long onLine = pqDeviceList.stream().filter(pqDevice -> Objects.equals(pqDevice.getStatus(), 1)).count(); + long Offline = pqDeviceList.stream().filter(pqDevice -> Objects.equals(pqDevice.getStatus(), 0)).count(); + regionDevCountVO.setAllCount(pqDeviceList.size()); + + regionDevCountVO.setOnLine((int) onLine); + regionDevCountVO.setOffLine((int) Offline); + result.add(regionDevCountVO); + }); + return result; + } + private List change(List list,List handleMsg){ List result = new ArrayList<>(); if(CollectionUtils.isEmpty(list)){