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 index 13038ee8..ec98b916 100644 --- 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 @@ -56,7 +56,8 @@ public class PqlineCache { redisUtil.saveByKey(NAME_KEY + StrUtil.DASHED+pqsDepts.getDeptsIndex(),deptslineIds); } - + List deptsList = pqsDeptsService.lambdaQuery().eq(PqsDepts::getState,1).list(); + redisUtil.saveByKey(NAME_KEY + StrUtil.DASHED+"AllDept",deptsList); } @PreDestroy diff --git a/event_smart/src/main/java/com/njcn/gather/event/devcie/job/LineCacheJob.java b/event_smart/src/main/java/com/njcn/gather/event/devcie/job/LineCacheJob.java index 76ae32b2..af492cdf 100644 --- a/event_smart/src/main/java/com/njcn/gather/event/devcie/job/LineCacheJob.java +++ b/event_smart/src/main/java/com/njcn/gather/event/devcie/job/LineCacheJob.java @@ -53,5 +53,9 @@ public class LineCacheJob { List deptslineIds = deptslines.stream().map(PqsDeptsline::getLineIndex).collect(Collectors.toList()); redisUtil.saveByKey(NAME_KEY + StrUtil.DASHED+pqsDepts.getDeptsIndex(),deptslineIds); } + + List deptsList = pqsDeptsService.lambdaQuery().eq(PqsDepts::getState,1).list(); + redisUtil.saveByKey(NAME_KEY + StrUtil.DASHED+"AllDept",deptsList); + } } diff --git a/event_smart/src/main/java/com/njcn/gather/event/transientes/controller/EventGateController.java b/event_smart/src/main/java/com/njcn/gather/event/transientes/controller/EventGateController.java index 430c029c..f3845b66 100644 --- a/event_smart/src/main/java/com/njcn/gather/event/transientes/controller/EventGateController.java +++ b/event_smart/src/main/java/com/njcn/gather/event/transientes/controller/EventGateController.java @@ -25,6 +25,7 @@ import com.njcn.gather.event.transientes.pojo.po.*; import com.njcn.gather.event.transientes.service.*; import com.njcn.gather.event.transientes.service.impl.MsgEventInfoServiceImpl; import com.njcn.gather.event.transientes.websocket.WebSocketServer; +import com.njcn.redis.utils.RedisUtil; import com.njcn.web.controller.BaseController; import com.njcn.web.utils.HttpResultUtil; import io.swagger.annotations.Api; @@ -46,6 +47,8 @@ import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.Stream; +import static com.njcn.gather.event.transientes.pojo.constant.RedisConstant.REDIS_DEPT_INDEX; + /** * @Author: cdf * @CreateTime: 2025-06-23 @@ -83,6 +86,8 @@ public class EventGateController extends BaseController { private final MsgEventInfoService msgEventInfoService; + private final RedisUtil redisUtil; + @OperateInfo @GetMapping("/eventMsg") @@ -90,7 +95,7 @@ public class EventGateController extends BaseController { @ApiImplicitParam(name = "eventMsg", value = "暂态事件json字符", required = true) public HttpResult eventMsg(@RequestParam("msg") String msg) { String methodDescribe = getMethodDescribe("eventMsg"); - System.out.println(msg); + log.info("收到前置推送暂降事件:"+msg); JSONObject jsonObject; try { @@ -107,28 +112,52 @@ public class EventGateController extends BaseController { String str ="/"; if(CollUtil.isNotEmpty(assList)){ List userIds = assList.stream().map(PqUserLineAssPO::getUserIndex).distinct().collect(Collectors.toList()); - List poList = pqUserLedgerMapper.selectList(new LambdaQueryWrapper().select(PqUserLedgerPO::getId,PqUserLedgerPO::getCustomerName).in(PqUserLedgerPO::getId,userIds)); - str = poList.stream().map(PqUserLedgerPO::getCustomerName).collect(Collectors.joining(StrUtil.COMMA)); + List poList = pqUserLedgerMapper.selectList(new LambdaQueryWrapper().select(PqUserLedgerPO::getId,PqUserLedgerPO::getProjectName).in(PqUserLedgerPO::getId,userIds)); + str = poList.stream().map(PqUserLedgerPO::getProjectName).collect(Collectors.joining(StrUtil.COMMA)); } - jsonObject.put("objName",str); + + List deptsList = (List)redisUtil.getObjectByKey(REDIS_DEPT_INDEX+ StrUtil.DASHED+"AllDept"); + Map deptsMap = deptsList.stream().collect(Collectors.toMap(PqsDepts::getDeptsIndex,dept->dept)); + + List deptslineList = pqsDeptslineService.lambdaQuery().eq(PqsDeptsline::getLineIndex,lineId).list(); + List deptIds = deptslineList.stream().map(PqsDeptsline::getDeptsIndex).collect(Collectors.toList()); + Set set =getAllParentIdsWithChildrenBatch(deptIds,deptsMap); + jsonObject.putOpt("objName",str); + jsonObject.putOpt("dept", String.join(StrUtil.COMMA, set)); + webSocketServer.sendMessageToAll(jsonObject.toString()); - //开始发送短信 - /* try { - sendMessage(jsonObject); - }catch (Exception e){ - log.error("短信组装发送失败!失败原因{}",e.getMessage()); - }*/ } } catch (Exception e) { + e.printStackTrace(); log.error("暂降json格式异常!{}", e.getMessage()); } return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); } + public Set getAllParentIdsRecursive(String deptId, Map deptMap, Set result) { + if (deptId == null || result.contains(deptId)) { + return result; + } + result.add(deptId); // 添加当前ID + PqsDepts dept = deptMap.get(deptId); + if (dept != null && dept.getParentnodeid() != null) { + getAllParentIdsRecursive(dept.getParentnodeid(), deptMap, result); // 递归处理父节点 + } + return result; + } + + // 批量处理入口方法 + public Set getAllParentIdsWithChildrenBatch(Collection deptIds, Map deptMap) { + Set result = new HashSet<>(); + for (String deptId : deptIds) { + getAllParentIdsRecursive(deptId, deptMap, result); + } + return result; + } @OperateInfo @GetMapping("/testEvent") diff --git a/event_smart/src/main/java/com/njcn/gather/event/transientes/pojo/po/PqUserLedgerPO.java b/event_smart/src/main/java/com/njcn/gather/event/transientes/pojo/po/PqUserLedgerPO.java index 9e75ad2f..affb6f47 100644 --- a/event_smart/src/main/java/com/njcn/gather/event/transientes/pojo/po/PqUserLedgerPO.java +++ b/event_smart/src/main/java/com/njcn/gather/event/transientes/pojo/po/PqUserLedgerPO.java @@ -29,6 +29,10 @@ public class PqUserLedgerPO implements Serializable { @TableField(value = "CUSTOMER_NAME") private String customerName; + + @TableField(value = "PROJECT_NAME") + private String projectName; + @TableField(value = "ELECTRICITY_ADDRESS") private String electricityAddress; diff --git a/event_smart/src/main/java/com/njcn/gather/event/transientes/service/impl/EventRightServiceImpl.java b/event_smart/src/main/java/com/njcn/gather/event/transientes/service/impl/EventRightServiceImpl.java index 70675b16..811160a9 100644 --- a/event_smart/src/main/java/com/njcn/gather/event/transientes/service/impl/EventRightServiceImpl.java +++ b/event_smart/src/main/java/com/njcn/gather/event/transientes/service/impl/EventRightServiceImpl.java @@ -72,14 +72,64 @@ public class EventRightServiceImpl implements EventRightService { private final PqDeviceMapper pqDeviceMapper; + + @Override public UserLedgerStatisticVO userLedgerStatistic(LargeScreenCountParam param) { UserLedgerStatisticVO result = new UserLedgerStatisticVO(); - //获取字典树 - List dicTreeList = pqsDicTreeMapper.selectList(new LambdaQueryWrapper<>()); + // 1. 获取字典树数据 + List dicTreeList = getAllDicTrees(); + Map treeMap = getDicTreeMap(dicTreeList); + setResultIds(result, treeMap); + + // 2. 获取线路ID列表 + List lineIds = commGeneralService.getLineIdsByDept(param); + if (CollUtil.isEmpty(lineIds)) { + return result; + } + + // 3. 获取用户线路关联数据 + List assList = getUserLineAssociations(lineIds); + if (CollUtil.isEmpty(assList)) { + return result; + } + + // 4. 获取用户台账信息 + Set assUserIds = assList.stream() + .map(PqUserLineAssPO::getUserIndex) + .collect(Collectors.toSet()); + List userLedgers = getUserLedgers(new ArrayList<>(assUserIds),null,false); + if (CollUtil.isEmpty(userLedgers)) { + return result; + } + + // 5. 获取事件和线路数据 + List events = getEventsInTimeRange(param, lineIds); + List lines = getLines(lineIds); + + // 6. 按用户类型分组处理 + Map> userMap = userLedgers.stream() + .collect(Collectors.groupingBy(PqUserLedgerPO::getBigObjType)); + + // 7. 构建结果 + buildResult(result, treeMap, userMap, assList, events, lines); + + return result; + } + + + private List getAllDicTrees(){ + return pqsDicTreeMapper.selectList(new LambdaQueryWrapper<>()); + } + + private Map getDicTreeMap(List dicTreeList) { List touList = dicTreeList.stream().filter(it -> Objects.equals(it.getCode(), DicTreeEnum.BJ_USER.getCode())||Objects.equals(it.getCode(), DicTreeEnum.OI_USER.getCode())||Objects.equals(it.getCode(), DicTreeEnum.OT_USER.getCode())).collect(Collectors.toList()); Map treeMap = touList.stream().collect(Collectors.toMap(PqsDicTreePO::getCode, Function.identity())); + return treeMap; + } + + private void setResultIds (UserLedgerStatisticVO result,Map treeMap){ treeMap.forEach((tree, obj) -> { if (tree.equals(DicTreeEnum.BJ_USER.getCode())) { result.setImportId(obj.getId()); @@ -89,28 +139,32 @@ public class EventRightServiceImpl implements EventRightService { result.setOtherId(obj.getId()); } }); + } - List lineIds = commGeneralService.getLineIdsByDept(param); - //获取当前用户权限能获取到的用户台账信息 + + private List getUserLineAssociations(List lineIds){ LambdaQueryWrapper assQuery = new LambdaQueryWrapper<>(); assQuery.in(PqUserLineAssPO::getLineIndex, lineIds); - List assList = pqUserLineAssMapper.selectList(assQuery); - if(CollUtil.isEmpty(assList)){ - return result; + + if(lineIds.size()>1000){ + List> lineList = CollUtil.split(lineIds, 1000); + assQuery.and(w -> { + for (List ids : lineList) { + w.or(wIn -> wIn.in(PqUserLineAssPO::getLineIndex, ids)); + } + }); + }else { + assQuery.in(PqUserLineAssPO::getLineIndex, lineIds); } - List assUserIds = assList.stream().map(PqUserLineAssPO::getUserIndex).distinct().collect(Collectors.toList()); - - - - Map dicTreeMap = dicTreeList.stream().collect(Collectors.toMap(PqsDicTreePO::getId, Function.identity())); + return pqUserLineAssMapper.selectList(assQuery); + } + private List getEventsInTimeRange(LargeScreenCountParam param,List lineIds){ //查询时间段的暂降事件 LambdaQueryWrapper eventQuery = new LambdaQueryWrapper<>(); eventQuery.between(PqsEventdetail::getTimeid, DateUtil.parse(param.getSearchBeginTime()), DateUtil.endOfDay(DateUtil.parse(param.getSearchEndTime()))) .in(PqsEventdetail::getWavetype, msgEventConfigService.getEventType()); - - LambdaQueryWrapper lineQuery = new LambdaQueryWrapper<>(); if (lineIds.size() > 1000) { List> listLineIds = CollUtil.split(lineIds, 1000); eventQuery.and(w -> { @@ -118,24 +172,54 @@ public class EventRightServiceImpl implements EventRightService { w.or(wIn -> wIn.in(PqsEventdetail::getLineid, ids)); } }); + } else { + eventQuery.in(PqsEventdetail::getLineid, lineIds); + } + return pqsEventdetailService.list(eventQuery); + } + + private List getUserLedgers(List assUserIds,LargeScreenCountParam param,boolean queryFlag){ + LambdaQueryWrapper userWrapper = new LambdaQueryWrapper<>(); + if(assUserIds.size()>1000){ + List> assUserIdsList = CollUtil.split(assUserIds, 1000); + userWrapper.and(w -> { + for (List ids : assUserIdsList) { + w.or(wIn -> wIn.in(PqUserLedgerPO::getId, ids)); + } + }); + }else { + userWrapper.in(PqUserLedgerPO::getId, assUserIds); + } + if(queryFlag){ + if(StrUtil.isNotBlank(param.getBigObjType())){ + //对象大类不为空 + userWrapper.eq(PqUserLedgerPO::getBigObjType,param.getBigObjType()); + } + if(StrUtil.isNotBlank(param.getSmallObjType())){ + //对象大类不为空 + userWrapper.eq(PqUserLedgerPO::getSmallObjType,param.getSmallObjType()); + } + } + return pqUserLedgerMapper.selectList(userWrapper); + } + private List getLines(List lineIds){ + LambdaQueryWrapper lineQuery = new LambdaQueryWrapper<>(); + if (lineIds.size() > 1000) { + List> listLineIds = CollUtil.split(lineIds, 1000); + lineQuery.and(w -> { for (List ids : listLineIds) { w.or(wIn -> wIn.in(PqLine::getLineIndex, ids)); } }); } else { - eventQuery.in(PqsEventdetail::getLineid, lineIds); lineQuery.in(PqLine::getLineIndex, lineIds); } - List eventdetailList = pqsEventdetailService.list(eventQuery); - List lineList = pqLineService.list(lineQuery); + return pqLineService.list(lineQuery); + } - List pqUserLedgerPOList = pqUserLedgerMapper.selectList(new LambdaQueryWrapper().in(PqUserLedgerPO::getId, assUserIds)); - if(CollUtil.isEmpty(pqUserLedgerPOList)){ - return result; - } - Map> userMap = pqUserLedgerPOList.stream().collect(Collectors.groupingBy(PqUserLedgerPO::getBigObjType)); + private void buildResult(UserLedgerStatisticVO result,Map treeMap,Map> userMap,List assList,List eventdetailList, List lineList){ List innerList = new ArrayList<>(); treeMap.forEach((tree, obj) -> { //获取对象大类的用户 @@ -169,7 +253,7 @@ public class EventRightServiceImpl implements EventRightService { item.setCount(count[0]); item.setTreeId(key); item.setParentId(obj.getId()); - item.setName(dicTreeMap.containsKey(key) ? dicTreeMap.get(key).getName() : "/"); + item.setName(treeMap.containsKey(key) ? treeMap.get(key).getName() : "/"); childrenList.add(item); }); inner.setChildren(childrenList); @@ -178,9 +262,51 @@ public class EventRightServiceImpl implements EventRightService { }); result.setInnerList(innerList); - return result; } + +/* @Override + public Page rightEventOpen(LargeScreenCountParam param) { + Page result = new Page<>(PageFactory.getPageNum(param), PageFactory.getPageSize(param)); + + // 1. 获取线路ID + List lineIds = commGeneralService.getLineIdsByRedis(param.getDeptId()); + if (CollUtil.isEmpty(lineIds)) { + return result; + } + + // 2. 获取用户线路关联 + List assList = getUserLineAssociations(lineIds); + if (CollUtil.isEmpty(assList)) { + return result; + } + + // 3. 获取用户台账 + List userLedgers = getFilteredUserLedgers(assList, param); + if (CollUtil.isEmpty(userLedgers)) { + return result; + } + + // 4. 获取事件数据 + List lineUseList = assList.stream() + .map(PqUserLineAssPO::getLineIndex) + .distinct() + .collect(Collectors.toList()); + + Page eventPage = getEventsPage(param, lineUseList); + if (CollUtil.isEmpty(eventPage.getRecords())) { + return result; + } + + // 5. 构建结果 + buildEventDetailResult(result, eventPage, assList, userLedgers); + + return result; + }*/ + + + + @Override public Page rightEventOpen(LargeScreenCountParam param) { Page result = new Page<>(PageFactory.getPageNum(param),PageFactory.getPageSize(param)); @@ -189,24 +315,14 @@ public class EventRightServiceImpl implements EventRightService { return result; } //获取用户监测点关系符合部门监测点的 - List assList = pqUserLineAssMapper.selectList(new LambdaQueryWrapper().in(PqUserLineAssPO::getLineIndex,deptLineIds)); + List assList = getUserLineAssociations(deptLineIds); List userIds = assList.stream().map(PqUserLineAssPO::getUserIndex).distinct().collect(Collectors.toList()); if(CollUtil.isEmpty(userIds)){ return result; } - - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.in(PqUserLedgerPO::getId,userIds); - if(StrUtil.isNotBlank(param.getBigObjType())){ - //对象大类不为空 - lambdaQueryWrapper.eq(PqUserLedgerPO::getBigObjType,param.getBigObjType()); - } - if(StrUtil.isNotBlank(param.getSmallObjType())){ - //对象大类不为空 - lambdaQueryWrapper.eq(PqUserLedgerPO::getSmallObjType,param.getSmallObjType()); - } //获取符合条件的用户 - List pqUserLedgerPOList = pqUserLedgerMapper.selectList(lambdaQueryWrapper); + List pqUserLedgerPOList =getUserLedgers(userIds,param,true); + if(CollUtil.isEmpty(pqUserLedgerPOList)){ return result; } @@ -218,7 +334,7 @@ public class EventRightServiceImpl implements EventRightService { //查询时间段的暂降事件 LambdaQueryWrapper eventQuery = new LambdaQueryWrapper<>(); eventQuery.between(PqsEventdetail::getTimeid, DateUtil.parse(param.getSearchBeginTime()), DateUtil.endOfDay(DateUtil.parse(param.getSearchEndTime()))) - .in(PqsEventdetail::getWavetype, msgEventConfigService.getEventType()); + .in(PqsEventdetail::getWavetype, msgEventConfigService.getEventType()).orderByDesc(PqsEventdetail::getTimeid); if (lineUseList.size() > 1000) { List> listLineIds = CollUtil.split(lineUseList, 1000); @@ -246,7 +362,7 @@ public class EventRightServiceImpl implements EventRightService { EventDetailVO eventDetailVO = new EventDetailVO(); BeanUtil.copyProperties(pqsEventdetail,eventDetailVO); List userTemIds = temMap.get(pqsEventdetail.getLineid()); - String objName = userTemIds.stream().map(it->pqMap.get(it).getCustomerName()).collect(Collectors.joining(StrUtil.COMMA)); + String objName = userTemIds.stream().map(it->pqMap.get(it).getProjectName()).collect(Collectors.joining("; ")); eventDetailVO.setObjName(objName); LedgerBaseInfoDTO dto = lineMap.get(pqsEventdetail.getLineid()); eventDetailVO.setBdname(dto.getStationName()); @@ -270,9 +386,7 @@ public class EventRightServiceImpl implements EventRightService { Page result = new Page<>(PageFactory.getPageNum(param),PageFactory.getPageSize(param)); List lineIds = commGeneralService.getLineIdsByRedis(param.getDeptId()); - LambdaQueryWrapper assQuery = new LambdaQueryWrapper<>(); - assQuery.in(PqUserLineAssPO::getLineIndex,lineIds); - List assPOList = pqUserLineAssMapper.selectList(assQuery); + List assPOList =getUserLineAssociations(lineIds); if(CollUtil.isEmpty(assPOList)){ return result; } @@ -343,25 +457,36 @@ public class EventRightServiceImpl implements EventRightService { if(CollUtil.isEmpty(deptLineIds)){ return result; } - List list = pqUserLineAssMapper.selectList(new LambdaQueryWrapper().in(PqUserLineAssPO::getLineIndex,deptLineIds)); - if(CollUtil.isEmpty(list)){ + + List assPOList = getUserLineAssociations(deptLineIds); + if(CollUtil.isEmpty(assPOList)){ return result; } - List userIds = list.stream().map(PqUserLineAssPO::getUserIndex).distinct().collect(Collectors.toList()); + List userIds = assPOList.stream().map(PqUserLineAssPO::getUserIndex).distinct().collect(Collectors.toList()); - List poList = pqUserLedgerMapper.selectList(new LambdaQueryWrapper().in(PqUserLedgerPO::getId,userIds).eq(PqUserLedgerPO::getIsShow,1)); + LambdaQueryWrapper userQuery = new LambdaQueryWrapper<>(); + if(userIds.size() > 1000){ + List> userIdList = CollUtil.split(userIds,1000); + userQuery.and(ad->{ + for(List ids : userIdList){ + ad.or(o->o.in(PqUserLedgerPO::getId,ids)); + } + }); + }else { + userQuery.in(PqUserLedgerPO::getId,userIds); + } + userQuery.eq(PqUserLedgerPO::getIsShow,1); + List poList = pqUserLedgerMapper.selectList(userQuery); if(CollUtil.isEmpty(poList)){ return result; } List ids = poList.stream().map(PqUserLedgerPO::getId).collect(Collectors.toList()); - List assTemList = list.stream().filter(it->ids.contains(it.getUserIndex())).collect(Collectors.toList()); + List assTemList = assPOList.stream().filter(it->ids.contains(it.getUserIndex())).collect(Collectors.toList()); //获取监测id,用于查询暂降表 List lineIds = assTemList.stream().map(PqUserLineAssPO::getLineIndex).distinct().collect(Collectors.toList()); - - List eventList = pqsEventdetailService.lambdaQuery(). in(PqsEventdetail::getLineid,lineIds) .in(PqsEventdetail::getWavetype,msgEventConfigService.getEventType()) @@ -370,7 +495,7 @@ public class EventRightServiceImpl implements EventRightService { poList.forEach(item->{ UserLedgerStatisticVO.Inner inner = new UserLedgerStatisticVO.Inner(); inner.setCustomId(item.getId()); - inner.setName(item.getCustomerName()); + inner.setName(item.getProjectName()); inner.setCount(0); result.add(inner); }); @@ -381,7 +506,7 @@ public class EventRightServiceImpl implements EventRightService { poList.forEach(item->{ UserLedgerStatisticVO.Inner inner = new UserLedgerStatisticVO.Inner(); inner.setCustomId(item.getId()); - inner.setName(item.getCustomerName()); + inner.setName(item.getProjectName()); List LIds = assMap.get(item.getId()); List eventIds = eventList.stream().filter(it -> LIds.contains(it.getLineid())).map(PqsEventdetail::getEventdetailIndex).collect(Collectors.toList()); inner.setEventList(eventIds); @@ -409,4 +534,21 @@ public class EventRightServiceImpl implements EventRightService { return count; } + private List batchQuery(List ids, Function, List> queryFunc, int batchSize) { + if (CollectionUtils.isEmpty(ids)) { + return Collections.emptyList(); + } + + if (ids.size() <= batchSize) { + return queryFunc.apply(ids); + } + + List result = new ArrayList<>(); + List> batches = CollUtil.split(ids, batchSize); + for (List batch : batches) { + result.addAll(queryFunc.apply(batch)); + } + return result; + } + } 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 6f1b73e4..2e7664f3 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 @@ -22,6 +22,8 @@ import com.njcn.gather.event.devcie.pojo.dto.LedgerBaseInfoDTO; import com.njcn.gather.event.devcie.pojo.dto.PqsDeptDTO; import com.njcn.gather.event.devcie.pojo.dto.SubstationDTO; import com.njcn.gather.event.devcie.pojo.po.PqLinedetail; +import com.njcn.gather.event.transientes.mapper.PqUserLedgerMapper; +import com.njcn.gather.event.transientes.mapper.PqUserLineAssMapper; 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; @@ -88,6 +90,11 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService { private final PqLinedetailMapper pqLinedetailMapper; private final RedisUtil redisUtil; private final PqsOnlinerateService pqsOnlinerateService; + + private final PqUserLedgerMapper pqUserLedgerMapper; + + private final PqUserLineAssMapper pqUserLineAssMapper; + @Value("${SYS_TYPE_ZT}") private String sysTypeZt; private final static String NAME_KEY = "LineCache:"; @@ -460,14 +467,14 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService { throw new BusinessException("统计类型有误类型"); } //根据用户获取当前部门及子部门id - // List deptslineIds = commGeneralService.getLineIdsByDept(largeScreenCountParam); - if (CollUtil.isEmpty(lineIds)) { + List deptslineIds = commGeneralService.getLineIdsByRedis(largeScreenCountParam.getDeptId()); + if (CollUtil.isEmpty(deptslineIds)) { return result; } List allList = new ArrayList<>(); LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - if(lineIds.size()>1000){ - List> idList = CollUtil.split(lineIds,1000); + if(deptslineIds.size()>1000){ + List> idList = CollUtil.split(deptslineIds,1000); for(List ids:idList){ lambdaQueryWrapper.clear(); lambdaQueryWrapper.between(PqsEventdetail::getTimeid, startTime, endTime) @@ -487,7 +494,7 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService { }else { lambdaQueryWrapper.between(PqsEventdetail::getTimeid, startTime, endTime) .in(PqsEventdetail::getWavetype,msgEventConfigService.getEventType()) - .in(PqsEventdetail::getLineid, lineIds) + .in(PqsEventdetail::getLineid, deptslineIds) .and(wrapper -> wrapper.eq(PqsEventdetail::getLookFlag, 0).or().isNull(PqsEventdetail::getLookFlag)); if (Objects.nonNull(largeScreenCountParam.getEventDeep())) { if (largeScreenCountParam.getEventDeep() == 0) { @@ -505,6 +512,14 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService { List ids = allList.stream().map(PqsEventdetail::getLineid).distinct().collect(Collectors.toList()); List pqLineList = pqLineService.getBaseLineInfo(ids); Map ledgerBaseInfoDTOMap = pqLineList.stream().collect(Collectors.toMap(LedgerBaseInfoDTO::getLineId, Function.identity())); + + List assList = pqUserLineAssMapper.selectList(new LambdaQueryWrapper().in(PqUserLineAssPO::getLineIndex,ids)); + List userIds = assList.stream().map(PqUserLineAssPO::getUserIndex).distinct().collect(Collectors.toList()); + List poList = pqUserLedgerMapper.selectList(new LambdaQueryWrapper().in(PqUserLedgerPO::getId,userIds)); + Map userMap = poList.stream().collect(Collectors.toMap(PqUserLedgerPO::getId,Function.identity())); + + Map> assMap = assList.stream().collect(Collectors.groupingBy(PqUserLineAssPO::getLineIndex)); + for(PqsEventdetail it : allList){ EventDetailVO eventDetailVO = new EventDetailVO(); eventDetailVO.setEventdetail_index(it.getEventdetailIndex()); @@ -521,6 +536,11 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService { eventDetailVO.setGdName(ledgerBaseInfoDTO.getGdName()); eventDetailVO.setBusName(ledgerBaseInfoDTO.getBusBarName()); } + if(assMap.containsKey(eventDetailVO.getLineid())) { + List temList = assMap.get(eventDetailVO.getLineid()).stream().map(PqUserLineAssPO::getUserIndex).collect(Collectors.toList()); + String str = temList.stream().map(its -> userMap.containsKey(its)?userMap.get(its).getProjectName() + "; ":"/").collect(Collectors.joining()); + eventDetailVO.setObjName(str); + } result.add(eventDetailVO); } } @@ -822,7 +842,7 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService { throw new BusinessException("部门下暂无监测点"); } - + List eventType = msgEventConfigService.getEventType(); LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>();