diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/LineDetailVO.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/LineDetailVO.java index 07c9df802..487b6f61a 100644 --- a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/LineDetailVO.java +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/LineDetailVO.java @@ -105,9 +105,12 @@ public class LineDetailVO implements Serializable { @ApiModelProperty(name = "终端厂家") private String manufacturer; - @ApiModelProperty(name = "终端厂家") + @ApiModelProperty(name = "监测对象ID") private String objId; + @ApiModelProperty(name = "监测对象名称") + private String objName; + } @Data diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/LineIntegrityDataController.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/LineIntegrityDataController.java index 400a0d71a..4ea28800d 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/LineIntegrityDataController.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/LineIntegrityDataController.java @@ -154,7 +154,6 @@ public class LineIntegrityDataController extends BaseController { @ApiOperation("监测点数据完整性(冀北)") @ApiImplicitParam(name = "param", value = "参数实体", required = true) public HttpResult getData(@RequestBody DeviceInfoParam.BusinessParam param) { - param.setLineOrDevice(0); String methodDescribe = getMethodDescribe("getData"); DeviceOnlineRate rate = irStatIntegrityDService.getData(param); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, rate, methodDescribe); diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/RStatIntegrityDServiceImpl.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/RStatIntegrityDServiceImpl.java index 4b9af8b60..13f04e919 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/RStatIntegrityDServiceImpl.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/RStatIntegrityDServiceImpl.java @@ -5,7 +5,6 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.date.StopWatch; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -38,7 +37,6 @@ import com.njcn.device.userledger.service.UserLedgerService; import com.njcn.supervision.pojo.param.user.UserReportParam; import com.njcn.supervision.pojo.vo.user.UserLedgerVO; import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -62,7 +60,6 @@ import java.util.stream.Collectors; */ @Service @RequiredArgsConstructor -@Slf4j public class RStatIntegrityDServiceImpl extends MppServiceImpl implements IRStatIntegrityDService { private final RStatOnlinerateDMapper onlineRateMapper; @@ -71,8 +68,6 @@ public class RStatIntegrityDServiceImpl extends MppServiceImpl deviceInfo = deviceService.getDeviceInfo(param, null, Collections.singletonList(1)); - sw.stop(); - if (CollUtil.isNotEmpty(deviceInfo)) { List lineIds = deviceInfo.stream() .flatMap(x -> x.getLineIndexes().stream()).collect(Collectors.toList()) .stream() .distinct() .collect(Collectors.toList()); - List filterLineList = new ArrayList<>(); - - if(CollectionUtil.isNotEmpty(lineIds)){ - //根据searchvalue过滤 - sw.start("获取线路详情远程调用"); - - List data = commLineClient.getLineAllDetailList(lineIds).getData(); - sw.stop(); - sw.start("内存过滤线路"); - - filterLineList= data.stream() - .filter(dto -> { - LineALLInfoDTO.LineLineDTO lineDTO = dto.getLineLineDTO(); - String linename = lineDTO != null ? lineDTO.getLinename() : null; - String objName2 = lineDTO != null ? lineDTO.getObjName2() : null; - - LineALLInfoDTO.LineSubStationDTO subStationDTO = dto.getLineSubStationDTO(); - String subStationName = subStationDTO != null ? subStationDTO.getSubStationName() : null; - - // 大小写敏感的模糊匹配(相当于 MySQL 的 LIKE '%keyword%') - return (linename != null && linename.contains(tempSearchValue)) - || (objName2 != null && objName2.contains(tempSearchValue)) - || (subStationName != null && subStationName.contains(tempSearchValue)); - }).map(dto -> dto.getLineLineDTO() != null ? dto.getLineLineDTO().getLineId() : null) - - .collect(Collectors.toList()); - } - sw.stop(); - - rate.setTotalNum(filterLineList.size()); - List finalFilterLineList = filterLineList; - //根据过滤后监测点过滤 - sw.start("过滤后重新组装"); - deviceInfo= deviceInfo.stream() - .filter(dto -> { - List original = dto.getLineIndexes(); - if (original == null || original.isEmpty()) { - return false; - } - // 计算交集 - List intersection = original.stream() - .filter(finalFilterLineList::contains) - .collect(Collectors.toList()); - if (intersection.isEmpty()) { - return false; - } - // 更新当前 DTO 的 lineIndexes 为交集 - dto.setLineIndexes(intersection); - return true; - }) - .collect(Collectors.toList()); //获取所有监测点的数据完整性 - sw.stop(); - sw.start("查询完整性率"); - - List lineIntegrityRateInfo = rStatIntegrityDMapper.getLineIntegrityRateInfo(filterLineList, param.getSearchBeginTime(), param.getSearchEndTime()); - sw.stop(); - sw.start("查询线路详情"); - + //获取所有监测点的数据完整性 + List lineIntegrityRateInfo = rStatIntegrityDMapper.getLineIntegrityRateInfo(lineIds, param.getSearchBeginTime(), param.getSearchEndTime()); //获取所有监测点信息信息 - List LineInfoByIds = lineService.getLineDetailByIds(filterLineList); - sw.stop(); + List LineInfoByIds = lineService.getLineDetailByIds(lineIds); - rate.setBelowNum(CollUtil.isNotEmpty(lineIntegrityRateInfo) ? calculateIntegrityRate(lineIntegrityRateInfo, 90, filterLineList.size()) : lineIds.size()); - rate.setTotalOnlineRate(calculateIntegrityRate(lineIntegrityRateInfo, filterLineList).doubleValue()>100.0?BigDecimal.valueOf(100.0) : calculateIntegrityRate(lineIntegrityRateInfo, lineIds)); + rate.setTotalNum(lineIds.size()); + rate.setBelowNum(CollUtil.isNotEmpty(lineIntegrityRateInfo) ? calculateIntegrityRate(lineIntegrityRateInfo, 90, lineIds.size()) : lineIds.size()); + rate.setTotalOnlineRate(calculateIntegrityRate(lineIntegrityRateInfo, lineIds).doubleValue() > 100.0 ? BigDecimal.valueOf(100.0) : calculateIntegrityRate(lineIntegrityRateInfo, lineIds)); List citDetailList = new ArrayList<>(); DeviceOnlineRate.CitDetail citDetail; DeviceOnlineRate.LineDetail detail; - //用户侧监测点 监测对象 - sw.start("查询用户台账"); - - List userLedgerVOS = userLedgerService.selectUserList(new UserReportParam()); - sw.stop(); - sw.start("组装响应"); - - Map objMap = userLedgerVOS.stream().collect(Collectors.toMap(UserLedgerVO::getId, UserLedgerVO::getProjectName)); for (GeneralDeviceDTO dto : deviceInfo) { //获取部门终端集合 List citDevOnRate = lineIntegrityRateInfo.stream().filter(x -> dto.getLineIndexes().contains(x.getLineIndex())).collect(Collectors.toList()); @@ -252,11 +174,10 @@ public class RStatIntegrityDServiceImpl extends MppServiceImpl lineDetail = LineInfoByIds.stream().filter(x -> dto.getLineIndexes().contains(x.getLineId())).collect(Collectors.toList()); - citDetail.setCitName(dto.getName()); citDetail.setCitTotalNum(dto.getLineIndexes().size()); citDetail.setCitBelowNum(CollUtil.isNotEmpty(citDevOnRate) ? calculateIntegrityRate(citDevOnRate, 90, dto.getLineIndexes().size()) : dto.getLineIndexes().size()); - citDetail.setCitTotalOnlineRate(calculateIntegrityRate(lineIntegrityRateInfo, dto.getLineIndexes()).doubleValue()>100.0?BigDecimal.valueOf(100.0):calculateIntegrityRate(lineIntegrityRateInfo, dto.getLineIndexes())); + citDetail.setCitTotalOnlineRate(calculateIntegrityRate(lineIntegrityRateInfo, dto.getLineIndexes()).doubleValue() > 100.0 ? BigDecimal.valueOf(100.0) : calculateIntegrityRate(lineIntegrityRateInfo, dto.getLineIndexes())); List detailList = new ArrayList<>(); for (LineDetailVO.Detail line : lineDetail) { detail = new DeviceOnlineRate.LineDetail(); @@ -271,9 +192,9 @@ public class RStatIntegrityDServiceImpl extends MppServiceImpl100.0?BigDecimal.valueOf(100.0):onlineRateByDevMap.getOrDefault(line.getLineId(), BigDecimal.valueOf(0))); + detail.setIntegrity(onlineRateByDevMap.getOrDefault(line.getLineId(), BigDecimal.valueOf(0)).doubleValue() > 100.0 ? BigDecimal.valueOf(100.0) : onlineRateByDevMap.getOrDefault(line.getLineId(), BigDecimal.valueOf(0))); detailList.add(detail); } citDetail.setDetailList(detailList); @@ -281,9 +202,7 @@ public class RStatIntegrityDServiceImpl extends MppServiceImpl imple @Override public List getLineByCondition(List ids, DeviceInfoParam deviceInfoParam) { + if(StrUtil.isNotBlank(deviceInfoParam.getSearchValue())){ + return this.baseMapper.getLineByConditionBySearchValue(ids, deviceInfoParam); + } return this.baseMapper.getLineByCondition(ids, deviceInfoParam); } diff --git a/pqs-device/pq-device/pq-device-com/src/main/java/com/njcn/device/line/mapper/LineMapper.java b/pqs-device/pq-device/pq-device-com/src/main/java/com/njcn/device/line/mapper/LineMapper.java index 28b879968..1d8a1f49e 100644 --- a/pqs-device/pq-device/pq-device-com/src/main/java/com/njcn/device/line/mapper/LineMapper.java +++ b/pqs-device/pq-device/pq-device-com/src/main/java/com/njcn/device/line/mapper/LineMapper.java @@ -148,6 +148,8 @@ public interface LineMapper extends BaseMapper { */ List getLineByCondition(@Param("ids") List ids, @Param("deviceInfoParam") DeviceInfoParam deviceInfoParam); + List getLineByConditionBySearchValue(@Param("ids") List ids, @Param("deviceInfoParam") DeviceInfoParam deviceInfoParam); + /** * 查询终端信息 * diff --git a/pqs-device/pq-device/pq-device-com/src/main/java/com/njcn/device/line/mapper/mapping/LineMapper.xml b/pqs-device/pq-device/pq-device-com/src/main/java/com/njcn/device/line/mapper/mapping/LineMapper.xml index 5dd2e78a7..165d5a17d 100644 --- a/pqs-device/pq-device/pq-device-com/src/main/java/com/njcn/device/line/mapper/mapping/LineMapper.xml +++ b/pqs-device/pq-device/pq-device-com/src/main/java/com/njcn/device/line/mapper/mapping/LineMapper.xml @@ -49,7 +49,7 @@ @@ -147,8 +147,6 @@ - - @@ -606,11 +596,11 @@ #{item} - and (line.name like CONCAT('%', #{searchValue},'%') - or voltage.name like CONCAT('%', #{searchValue},'%') - or device.name like CONCAT('%', #{searchValue},'%') - or substation.name like CONCAT('%', #{searchValue},'%') - or gd.name like CONCAT('%', #{searchValue},'%')) + and (line.name like CONCAT('%', #{searchValue},'%') + or voltage.name like CONCAT('%', #{searchValue},'%') + or device.name like CONCAT('%', #{searchValue},'%') + or substation.name like CONCAT('%', #{searchValue},'%') + or gd.name like CONCAT('%', #{searchValue},'%')) and pqdevice.com_flag = #{comFlag} @@ -620,28 +610,28 @@ @@ -694,7 +684,7 @@ - select id,pid,pids,name,level,updateTime,runFlag,comFlag,deviceId,substation,flowMeal,round(statisValue,2) statisValue,statisValue/flowMeal as flowProportion from + select id,pid,pids,name,level,updateTime,runFlag,comFlag,deviceId,substation,flowMeal,round(statisValue,2) + statisValue,statisValue/flowMeal as flowProportion from ( select a.id, @@ -922,7 +913,7 @@ LEFT JOIN cld_dev_meal c ON b.id = c.line_id LEFT JOIN cld_flow_meal d ON c.Base_Meal_Id = d.id LEFT JOIN cld_flow_meal d1 ON c.Ream_Meal_Id = d1.id - LEFT JOIN cld_month_flow m ON b.id = m.Dev_Id and m.time_id between #{startTime} and #{endTime} + LEFT JOIN cld_month_flow m ON b.id = m.Dev_Id and m.time_id between #{startTime} and #{endTime} where a.id in #{item} @@ -940,35 +931,35 @@ ANY_VALUE(t.substation) substation, ANY_VALUE(t.updateTime) updateTime, ANY_VALUE(t.runFlag) runFlag, - ANY_VALUE(t.comFlag) comFlag, - ANY_VALUE(t.flowMeal) flowMeal, + ANY_VALUE(t.comFlag) comFlag, + ANY_VALUE(t.flowMeal) flowMeal, SUM(t.statisValue) statisValue, ROUND(SUM(t.statisValue)/flowMeal,2) flowProportion from ( - SELECT - device.id id, - device.Name name, - sub.Name substation, - device.Update_Time updateTime, - b.run_flag runFlag, - b.com_flag comFlag, - ifnull(d.flow, (select flow from cld_flow_meal where type = 0 and flag = 1)) + ifnull(d1.flow, 0) flowMeal, - ROUND(ifnull(m.Actual_Value,0)/1024/1024,2) statisValue - FROM cld_month_flow m - INNER JOIN pq_line device ON device.id=m.Dev_Id - INNER JOIN pq_device b ON device.id=b.id - INNER JOIN pq_line sub ON device.pid = sub.id - LEFT JOIN cld_dev_meal c ON device.id = c.line_id - LEFT JOIN cld_flow_meal d ON c.Base_Meal_Id = d.id - LEFT JOIN cld_flow_meal d1 ON c.Ream_Meal_Id = d1.id - WHERE m.Dev_Id IN - - #{item} - - AND - device.Update_Time between #{startTime} and #{endTime} - AND - b.Run_Flag != 2 + SELECT + device.id id, + device.Name name, + sub.Name substation, + device.Update_Time updateTime, + b.run_flag runFlag, + b.com_flag comFlag, + ifnull(d.flow, (select flow from cld_flow_meal where type = 0 and flag = 1)) + ifnull(d1.flow, 0) flowMeal, + ROUND(ifnull(m.Actual_Value,0)/1024/1024,2) statisValue + FROM cld_month_flow m + INNER JOIN pq_line device ON device.id=m.Dev_Id + INNER JOIN pq_device b ON device.id=b.id + INNER JOIN pq_line sub ON device.pid = sub.id + LEFT JOIN cld_dev_meal c ON device.id = c.line_id + LEFT JOIN cld_flow_meal d ON c.Base_Meal_Id = d.id + LEFT JOIN cld_flow_meal d1 ON c.Ream_Meal_Id = d1.id + WHERE m.Dev_Id IN + + #{item} + + AND + device.Update_Time between #{startTime} and #{endTime} + AND + b.Run_Flag != 2 ) t GROUP BY t.id ORDER BY flowProportion DESC @@ -1016,89 +1007,89 @@ @@ -1161,32 +1156,30 @@ select line.id lineId, - line.name lineName, - dev.id devId, - station.name bdName, - lineDetail.Time_Interval as timeInterval, - lineDetail.obj_name as objName, - lineDetail.Power_Flag as powerFlag + line.name lineName, + dev.id devId, + station.name bdName, + lineDetail.Time_Interval as timeInterval, + lineDetail.obj_name as objName, + lineDetail.Power_Flag as powerFlag from pq_line line inner join pq_line_detail lineDetail on line.id = lineDetail.id inner join pq_line subv on line.pid = subv.id @@ -1219,13 +1212,13 @@ SELECT - line.id AS lineId, - dev.id AS devId, - detail.Time_Interval AS timeInterval, - vg.Scale AS voltageLevel, - pqd.Run_Flag as runFlag, - detail.PT_Type AS ptType, - detail.PT_Phase_Type AS ptPhaseType, - detail.Obj_Id AS objId, - detail.Big_Obj_Type AS bigObjType + line.id AS lineId, + dev.id AS devId, + detail.Time_Interval AS timeInterval, + vg.Scale AS voltageLevel, + pqd.Run_Flag as runFlag, + detail.PT_Type AS ptType, + detail.PT_Phase_Type AS ptPhaseType, + detail.Obj_Id AS objId, + detail.Big_Obj_Type AS bigObjType FROM - pq_line line, - pq_line_detail detail, - pq_line vo, - pq_voltage vg, - pq_line dev, - pq_device pqd + pq_line line, + pq_line_detail detail, + pq_line vo, + pq_voltage vg, + pq_line dev, + pq_device pqd WHERE - line.id = detail.id - AND vo.id = line.pid - AND dev.id = vo.pid - AND vo.id = vg.id - AND pqd.id = dev.id - AND line.id in + line.id = detail.id + AND vo.id = line.pid + AND dev.id = vo.pid + AND vo.id = vg.id + AND pqd.id = dev.id + AND line.id in #{id} SELECT DISTINCT gd.NAME gdName, substation.NAME subName, - device.NAME devName, + device.NAME devName, deviceDetail.ip ip, line.NAME lineName, - voltage.name volName, + voltage.name volName, pq_line_detail.run_flag FROM pq_line line, pq_line_detail pq_line_detail, @@ -1632,134 +1622,128 @@ - +