Merge remote-tracking branch 'origin/main'

This commit is contained in:
cdf
2026-06-17 14:21:17 +08:00
6 changed files with 668 additions and 699 deletions

View File

@@ -105,9 +105,12 @@ public class LineDetailVO implements Serializable {
@ApiModelProperty(name = "终端厂家") @ApiModelProperty(name = "终端厂家")
private String manufacturer; private String manufacturer;
@ApiModelProperty(name = "终端厂家") @ApiModelProperty(name = "监测对象ID")
private String objId; private String objId;
@ApiModelProperty(name = "监测对象名称")
private String objName;
} }
@Data @Data

View File

@@ -154,7 +154,6 @@ public class LineIntegrityDataController extends BaseController {
@ApiOperation("监测点数据完整性(冀北)") @ApiOperation("监测点数据完整性(冀北)")
@ApiImplicitParam(name = "param", value = "参数实体", required = true) @ApiImplicitParam(name = "param", value = "参数实体", required = true)
public HttpResult<DeviceOnlineRate> getData(@RequestBody DeviceInfoParam.BusinessParam param) { public HttpResult<DeviceOnlineRate> getData(@RequestBody DeviceInfoParam.BusinessParam param) {
param.setLineOrDevice(0);
String methodDescribe = getMethodDescribe("getData"); String methodDescribe = getMethodDescribe("getData");
DeviceOnlineRate rate = irStatIntegrityDService.getData(param); DeviceOnlineRate rate = irStatIntegrityDService.getData(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, rate, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, rate, methodDescribe);

View File

@@ -5,7 +5,6 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.StopWatch;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 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.param.user.UserReportParam;
import com.njcn.supervision.pojo.vo.user.UserLedgerVO; import com.njcn.supervision.pojo.vo.user.UserLedgerVO;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@@ -62,7 +60,6 @@ import java.util.stream.Collectors;
*/ */
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
@Slf4j
public class RStatIntegrityDServiceImpl extends MppServiceImpl<RStatIntegrityDMapper, RStatIntegrityD> implements IRStatIntegrityDService { public class RStatIntegrityDServiceImpl extends MppServiceImpl<RStatIntegrityDMapper, RStatIntegrityD> implements IRStatIntegrityDService {
private final RStatOnlinerateDMapper onlineRateMapper; private final RStatOnlinerateDMapper onlineRateMapper;
@@ -71,8 +68,6 @@ public class RStatIntegrityDServiceImpl extends MppServiceImpl<RStatIntegrityDMa
private final LineDetailMapper lineDetailMapper; private final LineDetailMapper lineDetailMapper;
private final GeneralDeviceService deviceService; private final GeneralDeviceService deviceService;
private final LineService lineService; private final LineService lineService;
private final UserLedgerService userLedgerService;
private final CommLineClient commLineClient;
@Override @Override
public Float getTotalIntegrityByLineIds(LineBaseQueryParam param) { public Float getTotalIntegrityByLineIds(LineBaseQueryParam param) {
@@ -153,98 +148,25 @@ public class RStatIntegrityDServiceImpl extends MppServiceImpl<RStatIntegrityDMa
@Override @Override
public DeviceOnlineRate getData(DeviceInfoParam.BusinessParam param) { public DeviceOnlineRate getData(DeviceInfoParam.BusinessParam param) {
DeviceOnlineRate rate = new DeviceOnlineRate(); DeviceOnlineRate rate = new DeviceOnlineRate();
//BusinessParam的searchvalue只匹配监测点名称现在要匹配电站监测点监测点对象名称所以穿空再添加过滤逻辑
String tempSearchValue=param.getSearchValue();
param.setSearchValue("");
StopWatch sw = new StopWatch();
sw.start("获取设备台账");
//获取终端台账类信息 //获取终端台账类信息
List<GeneralDeviceDTO> deviceInfo = deviceService.getDeviceInfo(param, null, Collections.singletonList(1)); List<GeneralDeviceDTO> deviceInfo = deviceService.getDeviceInfo(param, null, Collections.singletonList(1));
sw.stop();
if (CollUtil.isNotEmpty(deviceInfo)) { if (CollUtil.isNotEmpty(deviceInfo)) {
List<String> lineIds = deviceInfo.stream() List<String> lineIds = deviceInfo.stream()
.flatMap(x -> x.getLineIndexes().stream()).collect(Collectors.toList()) .flatMap(x -> x.getLineIndexes().stream()).collect(Collectors.toList())
.stream() .stream()
.distinct() .distinct()
.collect(Collectors.toList()); .collect(Collectors.toList());
List<String> filterLineList = new ArrayList<>(); //获取所有监测点的数据完整性
List<RStatIntegrityVO> lineIntegrityRateInfo = rStatIntegrityDMapper.getLineIntegrityRateInfo(lineIds, param.getSearchBeginTime(), param.getSearchEndTime());
if(CollectionUtil.isNotEmpty(lineIds)){
//根据searchvalue过滤
sw.start("获取线路详情远程调用");
List<LineALLInfoDTO> 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<String> finalFilterLineList = filterLineList;
//根据过滤后监测点过滤
sw.start("过滤后重新组装");
deviceInfo= deviceInfo.stream()
.filter(dto -> {
List<String> original = dto.getLineIndexes();
if (original == null || original.isEmpty()) {
return false;
}
// 计算交集
List<String> 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<RStatIntegrityVO> lineIntegrityRateInfo = rStatIntegrityDMapper.getLineIntegrityRateInfo(filterLineList, param.getSearchBeginTime(), param.getSearchEndTime());
sw.stop();
sw.start("查询线路详情");
//获取所有监测点信息信息 //获取所有监测点信息信息
List<LineDetailVO.Detail> LineInfoByIds = lineService.getLineDetailByIds(filterLineList); List<LineDetailVO.Detail> LineInfoByIds = lineService.getLineDetailByIds(lineIds);
sw.stop();
rate.setBelowNum(CollUtil.isNotEmpty(lineIntegrityRateInfo) ? calculateIntegrityRate(lineIntegrityRateInfo, 90, filterLineList.size()) : lineIds.size()); rate.setTotalNum(lineIds.size());
rate.setTotalOnlineRate(calculateIntegrityRate(lineIntegrityRateInfo, filterLineList).doubleValue()>100.0?BigDecimal.valueOf(100.0) : calculateIntegrityRate(lineIntegrityRateInfo, lineIds)); 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<DeviceOnlineRate.CitDetail> citDetailList = new ArrayList<>(); List<DeviceOnlineRate.CitDetail> citDetailList = new ArrayList<>();
DeviceOnlineRate.CitDetail citDetail; DeviceOnlineRate.CitDetail citDetail;
DeviceOnlineRate.LineDetail detail; DeviceOnlineRate.LineDetail detail;
//用户侧监测点 监测对象
sw.start("查询用户台账");
List<UserLedgerVO> userLedgerVOS = userLedgerService.selectUserList(new UserReportParam());
sw.stop();
sw.start("组装响应");
Map<String, String> objMap = userLedgerVOS.stream().collect(Collectors.toMap(UserLedgerVO::getId, UserLedgerVO::getProjectName));
for (GeneralDeviceDTO dto : deviceInfo) { for (GeneralDeviceDTO dto : deviceInfo) {
//获取部门终端集合 //获取部门终端集合
List<RStatIntegrityVO> citDevOnRate = lineIntegrityRateInfo.stream().filter(x -> dto.getLineIndexes().contains(x.getLineIndex())).collect(Collectors.toList()); List<RStatIntegrityVO> citDevOnRate = lineIntegrityRateInfo.stream().filter(x -> dto.getLineIndexes().contains(x.getLineIndex())).collect(Collectors.toList());
@@ -252,11 +174,10 @@ public class RStatIntegrityDServiceImpl extends MppServiceImpl<RStatIntegrityDMa
.collect(Collectors.toMap(RStatIntegrityVO::getLineIndex, RStatIntegrityVO::getIntegrityRate)); .collect(Collectors.toMap(RStatIntegrityVO::getLineIndex, RStatIntegrityVO::getIntegrityRate));
citDetail = new DeviceOnlineRate.CitDetail(); citDetail = new DeviceOnlineRate.CitDetail();
List<LineDetailVO.Detail> lineDetail = LineInfoByIds.stream().filter(x -> dto.getLineIndexes().contains(x.getLineId())).collect(Collectors.toList()); List<LineDetailVO.Detail> lineDetail = LineInfoByIds.stream().filter(x -> dto.getLineIndexes().contains(x.getLineId())).collect(Collectors.toList());
citDetail.setCitName(dto.getName()); citDetail.setCitName(dto.getName());
citDetail.setCitTotalNum(dto.getLineIndexes().size()); citDetail.setCitTotalNum(dto.getLineIndexes().size());
citDetail.setCitBelowNum(CollUtil.isNotEmpty(citDevOnRate) ? calculateIntegrityRate(citDevOnRate, 90, dto.getLineIndexes().size()) : 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<DeviceOnlineRate.LineDetail> detailList = new ArrayList<>(); List<DeviceOnlineRate.LineDetail> detailList = new ArrayList<>();
for (LineDetailVO.Detail line : lineDetail) { for (LineDetailVO.Detail line : lineDetail) {
detail = new DeviceOnlineRate.LineDetail(); detail = new DeviceOnlineRate.LineDetail();
@@ -271,9 +192,9 @@ public class RStatIntegrityDServiceImpl extends MppServiceImpl<RStatIntegrityDMa
detail.setLineId(line.getLineId()); detail.setLineId(line.getLineId());
detail.setLineName(line.getLineName()); detail.setLineName(line.getLineName());
//用户侧监测点 监测对象 //用户侧监测点 监测对象
detail.setObjName(StringUtils.isBlank(line.getObjId())?"/":objMap.get(line.getObjId())); detail.setObjName(StringUtils.isBlank(line.getObjName()) ? "/" : line.getObjName());
detail.setLatestTime(line.getTimeID()); detail.setLatestTime(line.getTimeID());
detail.setIntegrity(onlineRateByDevMap.getOrDefault(line.getLineId(), BigDecimal.valueOf(0)).doubleValue()>100.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); detailList.add(detail);
} }
citDetail.setDetailList(detailList); citDetail.setDetailList(detailList);
@@ -281,8 +202,6 @@ public class RStatIntegrityDServiceImpl extends MppServiceImpl<RStatIntegrityDMa
} }
rate.setCitDetailList(citDetailList); rate.setCitDetailList(citDetailList);
} }
sw.stop();
log.info("耗时总结"+sw.prettyPrint());
return rate; return rate;
} }

View File

@@ -1663,6 +1663,9 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
@Override @Override
public List<Line> getLineByCondition(List<String> ids, DeviceInfoParam deviceInfoParam) { public List<Line> getLineByCondition(List<String> ids, DeviceInfoParam deviceInfoParam) {
if(StrUtil.isNotBlank(deviceInfoParam.getSearchValue())){
return this.baseMapper.getLineByConditionBySearchValue(ids, deviceInfoParam);
}
return this.baseMapper.getLineByCondition(ids, deviceInfoParam); return this.baseMapper.getLineByCondition(ids, deviceInfoParam);
} }

View File

@@ -148,6 +148,8 @@ public interface LineMapper extends BaseMapper<Line> {
*/ */
List<Line> getLineByCondition(@Param("ids") List<String> ids, @Param("deviceInfoParam") DeviceInfoParam deviceInfoParam); List<Line> getLineByCondition(@Param("ids") List<String> ids, @Param("deviceInfoParam") DeviceInfoParam deviceInfoParam);
List<Line> getLineByConditionBySearchValue(@Param("ids") List<String> ids, @Param("deviceInfoParam") DeviceInfoParam deviceInfoParam);
/** /**
* 查询终端信息 * 查询终端信息
* *

View File

@@ -49,7 +49,7 @@
</select> </select>
<select id="getVoltageByDevId" resultType="Voltage"> <select id="getVoltageByDevId" resultType="Voltage">
select a.id,a.name,b.num select a.id, a.name, b.num
from pq_line a from pq_line a
inner join pq_voltage b on a.id = b.id inner join pq_voltage b on a.id = b.id
where a.pid = #{devId} where a.pid = #{devId}
@@ -66,7 +66,7 @@
</select> </select>
<select id="getAllList" resultType="TerminalTree"> <select id="getAllList" resultType="TerminalTree">
select a.id, a.pid, a.name, a.level, a.sort ,b.Power_Flag select a.id, a.pid, a.name, a.level, a.sort, b.Power_Flag
from pq_line a from pq_line a
left join pq_line_detail b on a.id = b.id left join pq_line_detail b on a.id = b.id
where state = 1 where state = 1
@@ -147,8 +147,6 @@
<!--华丽分割线 ++++ --> <!--华丽分割线 ++++ -->
<select id="getUnBindList" resultType="TerminalTree"> <select id="getUnBindList" resultType="TerminalTree">
select id, pid, name, level, sort select id, pid, name, level, sort
from pq_line from pq_line
@@ -294,9 +292,6 @@
#{item.id} #{item.id}
</foreach> </foreach>
</if> </if>
<if test="deviceInfoParam.searchValue!=null and deviceInfoParam.searchValue!='' and deviceInfoParam.lineOrDevice==0">
AND t1.name like CONCAT(CONCAT('%', #{deviceInfoParam.searchValue}), '%')
</if>
<!-- xy --> <!-- xy -->
<choose> <choose>
<when test="deviceInfoParam.statFlag"> <when test="deviceInfoParam.statFlag">
@@ -344,9 +339,6 @@
#{item.id} #{item.id}
</foreach> </foreach>
</if> </if>
<if test="deviceInfoParam.searchValue!=null and deviceInfoParam.searchValue!='' and deviceInfoParam.lineOrDevice==1">
AND t1.name like CONCAT(CONCAT('%', #{deviceInfoParam.searchValue}), '%')
</if>
<if test="devIds!=null and devIds.size()!=0"> <if test="devIds!=null and devIds.size()!=0">
AND t1.id IN AND t1.id IN
<foreach collection="devIds" open="(" close=")" item="item" separator=","> <foreach collection="devIds" open="(" close=")" item="item" separator=",">
@@ -381,8 +373,6 @@
</where> </where>
</select> </select>
<select id="getVoltageIdByScale" resultType="String"> <select id="getVoltageIdByScale" resultType="String">
@@ -437,54 +427,54 @@
</select> </select>
<select id="getBaseLineInfo" resultType="BaseLineInfo"> <select id="getBaseLineInfo" resultType="BaseLineInfo">
<!-- SELECT--> <!-- SELECT-->
<!-- line.Id,--> <!-- line.Id,-->
<!-- area.Name provincialName,--> <!-- area.Name provincialName,-->
<!-- gd.Name gdName,--> <!-- gd.Name gdName,-->
<!-- substation.Name subName,--> <!-- substation.Name subName,-->
<!-- subscale.Name subScale,--> <!-- subscale.Name subScale,-->
<!-- device.Name deviceName,--> <!-- device.Name deviceName,-->
<!-- pqdevice.IP networkParam,--> <!-- pqdevice.IP networkParam,-->
<!-- pqdevice.Com_Flag comState,--> <!-- pqdevice.Com_Flag comState,-->
<!-- factory.Name factoryName,--> <!-- factory.Name factoryName,-->
<!-- pqdevice.Update_Time time,--> <!-- pqdevice.Update_Time time,-->
<!-- voltage.Name subvName,--> <!-- voltage.Name subvName,-->
<!-- scale.Name subvScale,--> <!-- scale.Name subvScale,-->
<!-- line.Name lineName,--> <!-- line.Name lineName,-->
<!-- line.Sort--> <!-- line.Sort-->
<!-- FROM--> <!-- FROM-->
<!-- pq_line line,--> <!-- pq_line line,-->
<!-- pq_line voltage,--> <!-- pq_line voltage,-->
<!-- pq_voltage pqvoltage,--> <!-- pq_voltage pqvoltage,-->
<!-- pq_line device,--> <!-- pq_line device,-->
<!-- pq_device pqdevice,--> <!-- pq_device pqdevice,-->
<!-- pq_line substation,--> <!-- pq_line substation,-->
<!-- pq_substation pqsubstation,--> <!-- pq_substation pqsubstation,-->
<!-- pq_line gd,--> <!-- pq_line gd,-->
<!-- pq_line provincial,--> <!-- pq_line provincial,-->
<!-- sys_dict_data scale,--> <!-- sys_dict_data scale,-->
<!-- sys_dict_data factory,--> <!-- sys_dict_data factory,-->
<!-- sys_dict_data loadtype,--> <!-- sys_dict_data loadtype,-->
<!-- sys_dict_data subscale,--> <!-- sys_dict_data subscale,-->
<!-- sys_area area--> <!-- sys_area area-->
<!-- WHERE--> <!-- WHERE-->
<!-- line.pid = voltage.id--> <!-- line.pid = voltage.id-->
<!-- AND voltage.id = pqvoltage.id--> <!-- AND voltage.id = pqvoltage.id-->
<!-- AND pqvoltage.Scale = scale.id--> <!-- AND pqvoltage.Scale = scale.id-->
<!-- AND voltage.pid = device.id--> <!-- AND voltage.pid = device.id-->
<!-- AND voltage.pid = pqdevice.id--> <!-- AND voltage.pid = pqdevice.id-->
<!-- AND pqdevice.Manufacturer = factory.id--> <!-- AND pqdevice.Manufacturer = factory.id-->
<!-- AND device.pid = substation.id--> <!-- AND device.pid = substation.id-->
<!-- AND substation.id = pqsubstation.id--> <!-- AND substation.id = pqsubstation.id-->
<!-- AND pqsubstation.Scale = subscale.id--> <!-- AND pqsubstation.Scale = subscale.id-->
<!-- AND substation.pid = gd.id--> <!-- AND substation.pid = gd.id-->
<!-- AND gd.pid = provincial.id--> <!-- AND gd.pid = provincial.id-->
<!-- AND provincial.NAME = area.id--> <!-- AND provincial.NAME = area.id-->
<!-- AND line.Id IN--> <!-- AND line.Id IN-->
<!-- <foreach item="item" collection="list" separator="," open="(" close=")">--> <!-- <foreach item="item" collection="list" separator="," open="(" close=")">-->
<!-- #{item}--> <!-- #{item}-->
<!-- </foreach>--> <!-- </foreach>-->
<!-- GROUP BY line.id--> <!-- GROUP BY line.id-->
select select
line.Id, line.Id,
@@ -901,7 +891,8 @@
<select id="getNewDeviceRunStatistics" resultType="LineFlowMealDetailVO"> <select id="getNewDeviceRunStatistics" resultType="LineFlowMealDetailVO">
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 select
a.id, a.id,
@@ -1016,24 +1007,25 @@
</select> </select>
<select id="getLineList" resultType="string"> <select id="getLineList" resultType="string">
SELECT SELECT A1.Id
A1.Id FROM pq_line A1,
FROM
pq_line A1,
pq_line A2, pq_line A2,
pq_line A3, pq_line A3,
pq_line_detail B, pq_line_detail B,
pq_device C pq_device C
WHERE WHERE A1.Level = 6
A1.Level = 6 AND A1.Id = B.Id AND AND A1.Id = B.Id
A1.Pid = A2.Id AND A2.Pid = A3.Id AND A3.Id = C.Id AND AND A1.Pid = A2.Id
C.Dev_Model = 1 AND C.Dev_Data_Type IN (1,2) AND C.Run_Flag = 0 AND A2.Pid = A3.Id
AND A3.Id = C.Id
AND C.Dev_Model = 1
AND C.Dev_Data_Type IN (1, 2)
AND C.Run_Flag = 0
</select> </select>
<select id="getTerminalBaseExcel" resultType="TerminalBaseExcel"> <select id="getTerminalBaseExcel" resultType="TerminalBaseExcel">
SELECT SELECT pj.NAME projectName,
pj.NAME projectName,
area.NAME provinceName, area.NAME provinceName,
gd.NAME gdName, gd.NAME gdName,
sub.NAME substationName, sub.NAME substationName,
@@ -1060,8 +1052,8 @@
vo.Model subvModel, vo.Model subvModel,
line.NAME lineName, line.NAME lineName,
de.Num lineNum, de.Num lineNum,
concat( de.PT1, "/", de.PT2 ) AS pt, concat(de.PT1, "/", de.PT2) AS pt,
concat( de.CT1, "/", de.CT2 ) AS ct, concat(de.CT1, "/", de.CT2) AS ct,
de.Dev_Capacity, de.Dev_Capacity,
de.Short_Capacity, de.Short_Capacity,
de.Standard_Capacity, de.Standard_Capacity,
@@ -1076,8 +1068,7 @@
de.Stat_Flag, de.Stat_Flag,
dic3.name lineGrade, dic3.name lineGrade,
de.Remark de.Remark
FROM FROM pq_line line
pq_line line
INNER JOIN pq_line vol ON line.pid = vol.id INNER JOIN pq_line vol ON line.pid = vol.id
INNER JOIN pq_line dev ON vol.pid = dev.id INNER JOIN pq_line dev ON vol.pid = dev.id
INNER JOIN pq_line sub ON dev.pid = sub.id INNER JOIN pq_line sub ON dev.pid = sub.id
@@ -1098,7 +1089,7 @@
left join pq_dev_type dic7 on d.Dev_Type = dic7.id left join pq_dev_type dic7 on d.Dev_Type = dic7.id
left join sys_dict_data dic8 on d.front_type = dic8.id left join sys_dict_data dic8 on d.front_type = dic8.id
LEFT JOIN pq_node node ON d.Node_Id = node.id LEFT JOIN pq_node node ON d.Node_Id = node.id
order by pj.sort,pro.sort,gd.sort,sub.sort,dev.sort,vol.sort,line.sort order by pj.sort, pro.sort, gd.sort, sub.sort, dev.sort, vol.sort, line.sort
</select> </select>
<select id="getDevIndex" resultType="String"> <select id="getDevIndex" resultType="String">
@@ -1124,7 +1115,11 @@
</select> </select>
<select id="getDeviceList" resultType="string"> <select id="getDeviceList" resultType="string">
SELECT Id FROM pq_device WHERE Dev_Model = 1 AND Dev_Data_Type IN (1,2) AND Run_Flag = 0 SELECT Id
FROM pq_device
WHERE Dev_Model = 1
AND Dev_Data_Type IN (1, 2)
AND Run_Flag = 0
</select> </select>
@@ -1161,31 +1156,29 @@
<select id="getLineBySubStation" resultType="com.njcn.device.biz.pojo.dto.LineDevGetDTO"> <select id="getLineBySubStation" resultType="com.njcn.device.biz.pojo.dto.LineDevGetDTO">
SELECT SELECT pq_line.id pointId,
pq_line.id pointId,
lineDetail.Time_Interval timeInterval, lineDetail.Time_Interval timeInterval,
lineDetail.obj_Id objId, lineDetail.obj_Id objId,
dev.id devId, dev.id devId,
device.com_flag device.com_flag
FROM FROM pq_line pq_line
pq_line pq_line
INNER JOIN pq_line_detail lineDetail ON pq_line.id = lineDetail.id INNER JOIN pq_line_detail lineDetail ON pq_line.id = lineDetail.id
INNER JOIN pq_line busBar ON pq_line.pid = busBar.id INNER JOIN pq_line busBar ON pq_line.pid = busBar.id
INNER JOIN pq_line dev ON busBar.pid = dev.id INNER JOIN pq_line dev ON busBar.pid = dev.id
INNER JOIN pq_device device ON dev.id = device.id INNER JOIN pq_device device ON dev.id = device.id
WHERE WHERE (pq_line.LEVEL = 6
(pq_line.LEVEL = 6
AND pq_line.state = 1 AND pq_line.state = 1
AND device.Dev_Model = 1 AND device.Dev_Model = 1
AND device.Run_Flag = 0 AND device.Run_Flag = 0
) )
and FIND_IN_SET(#{subId}, pq_line.pids ); and FIND_IN_SET(#{subId}, pq_line.pids);
</select> </select>
<select id="getMonitorListDetail" resultType="com.njcn.device.biz.pojo.dto.LineDevGetDTO"> <select id="getMonitorListDetail" resultType="com.njcn.device.biz.pojo.dto.LineDevGetDTO">
select line.id pointId,line.name pointName, dev.id devId,0 type,1 lineType,lineDetail.Time_Interval as timeInterval select line.id pointId,line.name pointName, dev.id devId,0 type,1 lineType,lineDetail.Time_Interval as
timeInterval
from pq_line line from pq_line line
inner join pq_line_detail lineDetail on line.id = lineDetail.id inner join pq_line_detail lineDetail on line.id = lineDetail.id
inner join pq_line subv on line.pid = subv.id inner join pq_line subv on line.pid = subv.id
@@ -1270,7 +1263,7 @@
SELECT SELECT
voltage.id as id, voltage.id as id,
sub.id as pid, sub.id as pid,
<!-- 兼容国产数据库--> <!-- 兼容国产数据库-->
concat( sub.NAME, ' ', voltage.NAME ) as name, concat( sub.NAME, ' ', voltage.NAME ) as name,
voltage.Sort as sort voltage.Sort as sort
FROM FROM
@@ -1291,8 +1284,7 @@
</where> </where>
</select> </select>
<select id="getDevInfo" resultType="com.njcn.device.pq.pojo.advanced.UpDevVO"> <select id="getDevInfo" resultType="com.njcn.device.pq.pojo.advanced.UpDevVO">
select select dev.id as devIndex,
dev.id as devIndex,
dev.name as devName dev.name as devName
from pq_line line, from pq_line line,
pq_line vo, pq_line vo,
@@ -1379,7 +1371,8 @@
dev.NAME AS devName, dev.NAME AS devName,
pd.Dev_Series AS devSeries, pd.Dev_Series AS devSeries,
pd.ip AS ip, pd.ip AS ip,
round(ifnull(d.flow,( SELECT flow FROM cld_flow_meal WHERE type = 0 AND flag = 1 )) + ifnull( d1.flow, 0 ),2) AS flowMeal, round(ifnull(d.flow,( SELECT flow FROM cld_flow_meal WHERE type = 0 AND flag = 1 )) + ifnull( d1.flow, 0 ),2) AS
flowMeal,
round(ifnull( m.Actual_Value / 1024 / 1024, 0 ),2) AS statisValue, round(ifnull( m.Actual_Value / 1024 / 1024, 0 ),2) AS statisValue,
pd.Sim AS sim , pd.Sim AS sim ,
pld.Remark AS remark pld.Remark AS remark
@@ -1398,8 +1391,10 @@
LEFT JOIN cld_dev_meal c ON dev.id = c.line_id LEFT JOIN cld_dev_meal c ON dev.id = c.line_id
LEFT JOIN cld_flow_meal d ON c.Base_Meal_Id = d.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_flow_meal d1 ON c.Ream_Meal_Id = d1.id
LEFT JOIN cld_month_flow m ON dev.id = m.Dev_Id AND m.time_id between #{param.searchBeginTime} and #{param.searchEndTime} LEFT JOIN cld_month_flow m ON dev.id = m.Dev_Id AND m.time_id between #{param.searchBeginTime} and
LEFT JOIN (SELECT dev_index,avg( online_min /( online_min + offline_min ))* 100 onlineRate FROM r_stat_onlinerate_d #{param.searchEndTime}
LEFT JOIN (SELECT dev_index,avg( online_min /( online_min + offline_min ))* 100 onlineRate FROM
r_stat_onlinerate_d
WHERE time_id BETWEEN #{param.searchBeginTime} AND #{param.searchEndTime} WHERE time_id BETWEEN #{param.searchBeginTime} AND #{param.searchEndTime}
GROUP BY dev_index) a on a.dev_index=dev.Id GROUP BY dev_index) a on a.dev_index=dev.Id
LEFT JOIN (select line_index lineId,avg(real_time/due_time)*100 integrityData from r_stat_integrity_d LEFT JOIN (select line_index lineId,avg(real_time/due_time)*100 integrityData from r_stat_integrity_d
@@ -1454,8 +1449,7 @@
lineName lineName
</select> </select>
<select id="selectLineDetail" resultType="com.njcn.device.biz.pojo.dto.LineDTO"> <select id="selectLineDetail" resultType="com.njcn.device.biz.pojo.dto.LineDTO">
SELECT SELECT line.id AS lineId,
line.id AS lineId,
dev.id AS devId, dev.id AS devId,
detail.Time_Interval AS timeInterval, detail.Time_Interval AS timeInterval,
vg.Scale AS voltageLevel, vg.Scale AS voltageLevel,
@@ -1464,15 +1458,13 @@
detail.PT_Phase_Type AS ptPhaseType, detail.PT_Phase_Type AS ptPhaseType,
detail.Obj_Id AS objId, detail.Obj_Id AS objId,
detail.Big_Obj_Type AS bigObjType detail.Big_Obj_Type AS bigObjType
FROM FROM pq_line line,
pq_line line,
pq_line_detail detail, pq_line_detail detail,
pq_line vo, pq_line vo,
pq_voltage vg, pq_voltage vg,
pq_line dev, pq_line dev,
pq_device pqd pq_device pqd
WHERE WHERE line.id = detail.id
line.id = detail.id
AND vo.id = line.pid AND vo.id = line.pid
AND dev.id = vo.pid AND dev.id = vo.pid
AND vo.id = vg.id AND vo.id = vg.id
@@ -1511,8 +1503,7 @@
</select> </select>
<select id="getCustomDetailByLineId" resultType="map"> <select id="getCustomDetailByLineId" resultType="map">
SELECT SELECT line.id AS lineId,
line.id AS lineId,
CONCAT(CONCAT(CONCAT(sub.NAME, '_'), vo.NAME), CONCAT('_', line.NAME)) AS lineName, CONCAT(CONCAT(CONCAT(sub.NAME, '_'), vo.NAME), CONCAT('_', line.NAME)) AS lineName,
CONCAT(CONCAT(COALESCE(detail.pt1, 'N/A'), ':'), COALESCE(detail.pt2, 'N/A')) AS pt, CONCAT(CONCAT(COALESCE(detail.pt1, 'N/A'), ':'), COALESCE(detail.pt2, 'N/A')) AS pt,
CONCAT(CONCAT(COALESCE(detail.ct1, 'N/A'), ':'), COALESCE(detail.ct2, 'N/A')) AS ct, CONCAT(CONCAT(COALESCE(detail.ct1, 'N/A'), ':'), COALESCE(detail.ct2, 'N/A')) AS ct,
@@ -1522,8 +1513,7 @@
detail.Deal_Capacity AS Deal_Capacity, detail.Deal_Capacity AS Deal_Capacity,
pqd.This_Time_Check AS This_Time_Check, pqd.This_Time_Check AS This_Time_Check,
dic.NAME AS voltageLevel dic.NAME AS voltageLevel
FROM FROM pq_line line
pq_line line
JOIN pq_line_detail detail ON line.id = detail.id JOIN pq_line_detail detail ON line.id = detail.id
JOIN pq_line vo ON vo.id = line.pid JOIN pq_line vo ON vo.id = line.pid
JOIN pq_line dev ON dev.id = vo.pid JOIN pq_line dev ON dev.id = vo.pid
@@ -1531,8 +1521,7 @@
JOIN pq_device pqd ON pqd.id = dev.id JOIN pq_device pqd ON pqd.id = dev.id
JOIN sys_dict_data dic ON vg.scale = dic.id JOIN sys_dict_data dic ON vg.scale = dic.id
JOIN pq_line sub ON sub.id = dev.pid JOIN pq_line sub ON sub.id = dev.pid
WHERE WHERE line.id = #{lineId}
line.id = #{lineId}
</select> </select>
<select id="selectByIds" resultType="com.njcn.device.pq.pojo.vo.LineDetailVO$Detail"> <select id="selectByIds" resultType="com.njcn.device.pq.pojo.vo.LineDetailVO$Detail">
@@ -1560,7 +1549,8 @@
voltage.name as volName, voltage.name as volName,
lineDetail.Power_Flag powerFlag, lineDetail.Power_Flag powerFlag,
lineDetail.Run_Flag lineRunType, lineDetail.Run_Flag lineRunType,
lineDetail.Obj_Id objId lineDetail.Obj_Id objId,
lineDetail.Obj_Name objName
FROM FROM
pq_line voltage, pq_line voltage,
pq_line device, pq_line device,
@@ -1632,8 +1622,7 @@
</select> </select>
<select id="getDeviceDetailData" resultType="DeviceVO"> <select id="getDeviceDetailData" resultType="DeviceVO">
SELECT SELECT DISTINCT gd.NAME gdName,
DISTINCT gd.NAME gdName,
substation.NAME subName, substation.NAME subName,
pq_line.id devIndex, pq_line.id devIndex,
pq_line.NAME NAME, pq_line.NAME NAME,
@@ -1641,13 +1630,11 @@
pq_device.Dev_Type, pq_device.Dev_Type,
pq_device.IP, pq_device.IP,
pq_device.Run_Flag pq_device.Run_Flag
FROM FROM pq_line pq_line,
pq_line pq_line,
pq_device pq_device, pq_device pq_device,
pq_line substation, pq_line substation,
pq_line gd pq_line gd
WHERE WHERE pq_line.id = pq_device.id
pq_line.id = pq_device.id
AND pq_line.pid = substation.id AND pq_line.pid = substation.id
AND substation.pid = gd.id AND substation.pid = gd.id
AND pq_line.id = #{id} AND pq_line.id = #{id}
@@ -1715,19 +1702,16 @@
</select> </select>
<select id="getNoDataLine" resultType="com.njcn.device.pq.pojo.vo.LineDetailVO$noDataLineInfo"> <select id="getNoDataLine" resultType="com.njcn.device.pq.pojo.vo.LineDetailVO$noDataLineInfo">
select select pl3.Id lineId,
pl3.Id lineId,
pl3.Name lineName, pl3.Name lineName,
pd.Id devId, pd.Id devId,
pl1.name devName, pl1.name devName,
pd.Update_Time pd.Update_Time
from from pq_device pd
pq_device pd
left join pq_line pl1 on pd.Id = pl1.Id left join pq_line pl1 on pd.Id = pl1.Id
left join pq_line pl2 on pl1.Id = pl2.pId left join pq_line pl2 on pl1.Id = pl2.pId
left join pq_line pl3 on pl2.Id = pl3.pId left join pq_line pl3 on pl2.Id = pl3.pId
where where pd.Dev_Model = 1
pd.Dev_Model = 1
and pd.Run_Flag = 0 and pd.Run_Flag = 0
and pl1.state = 1 and pl1.state = 1
and pl3.Id is not null and pl3.Id is not null
@@ -1806,7 +1790,8 @@
</foreach> </foreach>
</if> </if>
<if test="param.searchValue!=null and param.searchValue!=''"> <if test="param.searchValue!=null and param.searchValue!=''">
AND (t1.name like CONCAT('%', #{param.searchValue}, '%') or t2.Power_Substation_Name like CONCAT('%', #{param.searchValue}, '%')) AND (t1.name like CONCAT('%', #{param.searchValue}, '%') or t2.Power_Substation_Name like CONCAT('%',
#{param.searchValue}, '%'))
</if> </if>
</where> </where>
@@ -1829,27 +1814,30 @@
</select> </select>
<select id="getLineByDeviceId" resultType="com.njcn.device.pq.pojo.dto.MonitorInfo"> <select id="getLineByDeviceId" resultType="com.njcn.device.pq.pojo.dto.MonitorInfo">
SELECT SELECT pq_line_detail.id id,
pq_line_detail.id id,
line.Name name, line.Name name,
pq_line_detail.Num lineNo, pq_line_detail.Num lineNo,
s1.Name voltageLevel, s1.Name voltageLevel,
pq_line_detail.PT_Type ptType, pq_line_detail.PT_Type ptType,
pq_line_detail.Run_Flag status pq_line_detail.Run_Flag status
FROM FROM pq_line_detail
pq_line_detail
LEFT JOIN pq_line line ON pq_line_detail.Id = line.Id LEFT JOIN pq_line line ON pq_line_detail.Id = line.Id
INNER JOIN pq_line voltage on voltage.id = line.Pid INNER JOIN pq_line voltage on voltage.id = line.Pid
LEFT JOIN pq_voltage ON pq_voltage.id =voltage.id LEFT JOIN pq_voltage ON pq_voltage.id = voltage.id
LEFT JOIN sys_dict_data s1 ON pq_voltage.Scale = s1.id LEFT JOIN sys_dict_data s1 ON pq_voltage.Scale = s1.id
WHERE voltage.Pid = #{id} WHERE voltage.Pid = #{id}
</select> </select>
<select id="getLineAndLineDetail" resultType="TerminalTree"> <select id="getLineAndLineDetail" resultType="TerminalTree">
select select t1.id,
t1.id,t1.name,t1.pid,t2.obj_id,t1.sort,t1.pids,t1.level t1.name,
from t1.pid,
pq_line t1 inner join pq_line_detail t2 on t1.id = t2.id t2.obj_id,
t1.sort,
t1.pids,
t1.level
from pq_line t1
inner join pq_line_detail t2 on t1.id = t2.id
where t1.state = 1 where t1.state = 1
</select> </select>
<select id="getLineDeviceByDevIds" resultType="com.njcn.device.pq.pojo.vo.DevDetailVO"> <select id="getLineDeviceByDevIds" resultType="com.njcn.device.pq.pojo.vo.DevDetailVO">
@@ -1905,7 +1893,9 @@
</select> </select>
<select id="getSubIdByPid" resultType="String"> <select id="getSubIdByPid" resultType="String">
SELECT id from pq_line where pid = #{pid} SELECT id
from pq_line
where pid = #{pid}
</select> </select>
<select id="getDeviceIdByJbPowerFlag" resultType="java.lang.String"> <select id="getDeviceIdByJbPowerFlag" resultType="java.lang.String">
select select
@@ -2022,5 +2012,58 @@
</select> </select>
<select id="getLineByConditionBySearchValue" resultType="com.njcn.device.pq.pojo.po.Line">
SELECT DISTINCT
t1.*
FROM
pq_line t1,
pq_line_detail t2,
pq_line voltage,
pq_line device,
pq_line substation
WHERE
t1.state = 1
AND t1.id = t2.id
AND t1.pid = voltage.id
AND voltage.pid = device.id
AND device.pid = substation.id
and
t1.id in
<foreach collection="ids" separator="," open="(" close=")" item="item">
#{item}
</foreach>
<if test="deviceInfoParam.monitorFlag!=2 and deviceInfoParam.monitorFlag!=null">
and t2.Monitor_Flag = #{deviceInfoParam.monitorFlag}
</if>
<if test="deviceInfoParam.powerFlag!=2 and deviceInfoParam.powerFlag!=null ">
and t2.Power_Flag = #{deviceInfoParam.powerFlag}
</if>
<if test="deviceInfoParam.lineRunFlag!=null ">
and t2.Run_Flag = #{deviceInfoParam.lineRunFlag}
</if>
<if test="deviceInfoParam.lineGrade!='' and deviceInfoParam.lineGrade!=null">
and t2.line_grade = #{deviceInfoParam.lineGrade}
</if>
<if test="deviceInfoParam.loadType!=null and deviceInfoParam.loadType.size()!=0">
AND t2.Load_Type in
<foreach collection="deviceInfoParam.loadType" open="(" close=")" item="item" separator=",">
#{item.id}
</foreach>
</if>
<if test="deviceInfoParam.searchValue!=null and deviceInfoParam.searchValue!=''">
and (
t1.name like CONCAT('%', #{deviceInfoParam.searchValue}, '%')
or t2.Obj_Name like CONCAT('%', #{deviceInfoParam.searchValue}, '%')
or device.NAME like CONCAT('%', #{deviceInfoParam.searchValue}, '%')
or substation.NAME like CONCAT('%', #{deviceInfoParam.searchValue},'%')
)
</if>
<!-- xy -->
<choose>
<when test="deviceInfoParam.statFlag">
AND t2.Stat_Flag = 1
</when>
</choose>
<!-- -->
</select>
</mapper> </mapper>