稳态报告接口迁移(后续需要合并代码)
This commit is contained in:
@@ -9,6 +9,7 @@ import com.njcn.common.utils.HttpResultUtil;
|
|||||||
import com.njcn.csdevice.api.fallback.CsLineClientFallbackFactory;
|
import com.njcn.csdevice.api.fallback.CsLineClientFallbackFactory;
|
||||||
import com.njcn.csdevice.pojo.param.CsLineParam;
|
import com.njcn.csdevice.pojo.param.CsLineParam;
|
||||||
import com.njcn.csdevice.pojo.po.CsLinePO;
|
import com.njcn.csdevice.pojo.po.CsLinePO;
|
||||||
|
import com.njcn.csdevice.pojo.vo.LineDetailDataVO;
|
||||||
import com.njcn.device.biz.pojo.po.Overlimit;
|
import com.njcn.device.biz.pojo.po.Overlimit;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import org.springframework.cloud.openfeign.FeignClient;
|
import org.springframework.cloud.openfeign.FeignClient;
|
||||||
@@ -71,4 +72,7 @@ public interface CsLineFeignClient {
|
|||||||
@PostMapping("/list")
|
@PostMapping("/list")
|
||||||
HttpResult<List<CsLinePO>> list(@RequestBody CsLinePO param);
|
HttpResult<List<CsLinePO>> list(@RequestBody CsLinePO param);
|
||||||
|
|
||||||
|
@PostMapping("/getLineDetailData")
|
||||||
|
HttpResult<LineDetailDataVO> getLineDetailData(@RequestParam("id") String id);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,10 +6,12 @@ import com.njcn.common.pojo.response.HttpResult;
|
|||||||
import com.njcn.csdevice.api.CsLineFeignClient;
|
import com.njcn.csdevice.api.CsLineFeignClient;
|
||||||
import com.njcn.csdevice.pojo.param.CsLineParam;
|
import com.njcn.csdevice.pojo.param.CsLineParam;
|
||||||
import com.njcn.csdevice.pojo.po.CsLinePO;
|
import com.njcn.csdevice.pojo.po.CsLinePO;
|
||||||
|
import com.njcn.csdevice.pojo.vo.LineDetailDataVO;
|
||||||
import com.njcn.device.biz.pojo.po.Overlimit;
|
import com.njcn.device.biz.pojo.po.Overlimit;
|
||||||
import feign.hystrix.FallbackFactory;
|
import feign.hystrix.FallbackFactory;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -116,6 +118,12 @@ public class CsLineClientFallbackFactory implements FallbackFactory<CsLineFeignC
|
|||||||
log.error("{}异常,降级处理,异常为:{}","查询监测点列表异常",cause.toString());
|
log.error("{}异常,降级处理,异常为:{}","查询监测点列表异常",cause.toString());
|
||||||
throw new BusinessException(finalExceptionEnum);
|
throw new BusinessException(finalExceptionEnum);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HttpResult<LineDetailDataVO> getLineDetailData(@RequestParam("id") String id) {
|
||||||
|
log.error("{}异常,降级处理,异常为:{}","查询监测点详情异常",cause.toString());
|
||||||
|
throw new BusinessException(finalExceptionEnum);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,135 @@
|
|||||||
|
package com.njcn.csdevice.pojo.vo;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author denghuajun
|
||||||
|
* @date 2022/2/23
|
||||||
|
* 监测点信息
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@ApiModel
|
||||||
|
public class LineDetailDataVO {
|
||||||
|
|
||||||
|
private String lineId;
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "id",value = "监测点序号")
|
||||||
|
private Integer id;
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "lineName",value = "监测点名称")
|
||||||
|
private String lineName;
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "areaName",value = "工程名称")
|
||||||
|
private String areaName;
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "gdName",value = "单位")
|
||||||
|
private String gdName;
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "bdName",value = "部门")
|
||||||
|
private String bdName;
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "scale",value = "电压等级")
|
||||||
|
private String scale;
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "manufacturer",value = "厂家")
|
||||||
|
private String manufacturer;
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "devId",value = "终端Id")
|
||||||
|
private String devId;
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "devName",value = "终端名称")
|
||||||
|
private String devName;
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "ip",value = "网络参数")
|
||||||
|
private String ip;
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "runFlag",value = "终端运行状态")
|
||||||
|
private String runFlag;
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "comFlag",value = "通讯状态")
|
||||||
|
private String comFlag;
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "loadType",value = "干扰源类型")
|
||||||
|
private String loadType;
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "businessType",value = "行业类型")
|
||||||
|
private String businessType;
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "objName",value = "监测点对象名称")
|
||||||
|
private String objName;
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "ptType",value = "接线方式")
|
||||||
|
private String ptType;
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "pt",value = "PT变比")
|
||||||
|
private String pt;
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "ct",value = "CT变比")
|
||||||
|
private String ct;
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "standardCapacity",value = "基准容量(MVA)")
|
||||||
|
private Float standardCapacity;
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "shortCapacity",value = "最小短路容量(MVA)")
|
||||||
|
private Float shortCapacity;
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "devCapacity",value = "供电设备容量(MVA)")
|
||||||
|
private Float devCapacity;
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "dealCapacity",value = "用户协议容量(MVA)")
|
||||||
|
private Float dealCapacity;
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "powerFlag",value = "电网标志(0-电网侧;1-非电网侧)")
|
||||||
|
private Integer powerFlag;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 测量间隔(1-10分钟)
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(name = "timeInterval",value = "测量间隔(1-10分钟)")
|
||||||
|
private Integer timeInterval;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 监测点拥有者
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(name = "owner",value = "监测点拥有者")
|
||||||
|
private String owner;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 拥有者职务
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(name = "ownerDuty",value = "拥有者职务")
|
||||||
|
private String ownerDuty;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 拥有者联系方式
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(name = "ownerTel",value = "拥有者联系方式")
|
||||||
|
private String ownerTel;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 接线图
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(name = "wiringDiagram",value = "接线图")
|
||||||
|
private String wiringDiagram;
|
||||||
|
@ApiModelProperty(name = "ptPhaseType",value = "监测点接线相别(0,单相,1,三相,默认三相)")
|
||||||
|
private Integer ptPhaseType;
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "投运日期")
|
||||||
|
private LocalDate loginTime;
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "最新数据时间")
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
private LocalDateTime updateTime;
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "监测对象信息ID")
|
||||||
|
private String objId;
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "对象类型大类")
|
||||||
|
private String bigObjType;
|
||||||
|
}
|
||||||
@@ -11,6 +11,7 @@ import com.njcn.common.utils.HttpResultUtil;
|
|||||||
import com.njcn.csdevice.mapper.OverlimitMapper;
|
import com.njcn.csdevice.mapper.OverlimitMapper;
|
||||||
import com.njcn.csdevice.pojo.param.CsLineParam;
|
import com.njcn.csdevice.pojo.param.CsLineParam;
|
||||||
import com.njcn.csdevice.pojo.po.CsLinePO;
|
import com.njcn.csdevice.pojo.po.CsLinePO;
|
||||||
|
import com.njcn.csdevice.pojo.vo.LineDetailDataVO;
|
||||||
import com.njcn.csdevice.pojo.vo.PqSensitiveUserLineVO;
|
import com.njcn.csdevice.pojo.vo.PqSensitiveUserLineVO;
|
||||||
import com.njcn.csdevice.service.CsLinePOService;
|
import com.njcn.csdevice.service.CsLinePOService;
|
||||||
import com.njcn.device.biz.pojo.po.Overlimit;
|
import com.njcn.device.biz.pojo.po.Overlimit;
|
||||||
@@ -302,4 +303,14 @@ public class CslineController extends BaseController {
|
|||||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, url, methodDescribe);
|
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, url, methodDescribe);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||||
|
@PostMapping("/getLineDetailData")
|
||||||
|
@ApiOperation("根据监测点id获取监测点详情")
|
||||||
|
@ApiImplicitParam(name = "id", value = "监测点id", required = true)
|
||||||
|
public HttpResult<LineDetailDataVO> getLineDetailData(@RequestParam("id") String id) {
|
||||||
|
String methodDescribe = getMethodDescribe("getLineDetailData");
|
||||||
|
LineDetailDataVO result = csLinePOService.getLineDetailData(id);
|
||||||
|
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import com.njcn.csdevice.pojo.param.CsLineParam;
|
import com.njcn.csdevice.pojo.param.CsLineParam;
|
||||||
import com.njcn.csdevice.pojo.po.CsLinePO;
|
import com.njcn.csdevice.pojo.po.CsLinePO;
|
||||||
|
import com.njcn.csdevice.pojo.vo.LineDetailDataVO;
|
||||||
import com.njcn.csdevice.pojo.vo.PqSensitiveUserLineVO;
|
import com.njcn.csdevice.pojo.vo.PqSensitiveUserLineVO;
|
||||||
import com.njcn.web.pojo.param.BaseParam;
|
import com.njcn.web.pojo.param.BaseParam;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@@ -11,7 +12,7 @@ import org.springframework.web.multipart.MultipartFile;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* Description:
|
* Description:
|
||||||
* Date: 2023/5/18 14:01【需求编号】
|
* Date: 2023/5/18 14:01【需求编号】
|
||||||
*
|
*
|
||||||
@@ -83,4 +84,11 @@ public interface CsLinePOService extends IService<CsLinePO>{
|
|||||||
Page<PqSensitiveUserLineVO> getSensitiveUserLineList(BaseParam param);
|
Page<PqSensitiveUserLineVO> getSensitiveUserLineList(BaseParam param);
|
||||||
boolean uploadReport(MultipartFile file, String lineId);
|
boolean uploadReport(MultipartFile file, String lineId);
|
||||||
String getReportUrl(String lineId);
|
String getReportUrl(String lineId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取监测点详情
|
||||||
|
* @param id 监测点id
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
LineDetailDataVO getLineDetailData(String id);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,9 +14,11 @@ import com.njcn.access.api.CsLineLatestDataFeignClient;
|
|||||||
import com.njcn.access.pojo.po.CsLineLatestData;
|
import com.njcn.access.pojo.po.CsLineLatestData;
|
||||||
import com.njcn.common.pojo.enums.common.DataStateEnum;
|
import com.njcn.common.pojo.enums.common.DataStateEnum;
|
||||||
import com.njcn.common.pojo.exception.BusinessException;
|
import com.njcn.common.pojo.exception.BusinessException;
|
||||||
|
import com.njcn.common.utils.PubUtils;
|
||||||
import com.njcn.csdevice.mapper.*;
|
import com.njcn.csdevice.mapper.*;
|
||||||
import com.njcn.csdevice.pojo.param.CsLineParam;
|
import com.njcn.csdevice.pojo.param.CsLineParam;
|
||||||
import com.njcn.csdevice.pojo.po.*;
|
import com.njcn.csdevice.pojo.po.*;
|
||||||
|
import com.njcn.csdevice.pojo.vo.LineDetailDataVO;
|
||||||
import com.njcn.csdevice.pojo.vo.PqSensitiveUserLineVO;
|
import com.njcn.csdevice.pojo.vo.PqSensitiveUserLineVO;
|
||||||
import com.njcn.csdevice.service.CsDevModelService;
|
import com.njcn.csdevice.service.CsDevModelService;
|
||||||
import com.njcn.csdevice.service.CsLinePOService;
|
import com.njcn.csdevice.service.CsLinePOService;
|
||||||
@@ -32,22 +34,21 @@ import com.njcn.user.api.UserFeignClient;
|
|||||||
import com.njcn.user.pojo.constant.UserType;
|
import com.njcn.user.pojo.constant.UserType;
|
||||||
import com.njcn.user.pojo.vo.UserVO;
|
import com.njcn.user.pojo.vo.UserVO;
|
||||||
import com.njcn.web.pojo.param.BaseParam;
|
import com.njcn.web.pojo.param.BaseParam;
|
||||||
|
import com.njcn.web.pojo.vo.LineDataVO;
|
||||||
import com.njcn.web.utils.RequestUtil;
|
import com.njcn.web.utils.RequestUtil;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* Description:
|
* Description:
|
||||||
* Date: 2023/5/18 14:01【需求编号】
|
* Date: 2023/5/18 14:01【需求编号】
|
||||||
*
|
*
|
||||||
@@ -386,6 +387,40 @@ public class CsLinePOServiceImpl extends ServiceImpl<CsLinePOMapper, CsLinePO> i
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public LineDetailDataVO getLineDetailData(String id) {
|
||||||
|
if (StringUtils.isEmpty(id)) {
|
||||||
|
return new LineDetailDataVO();
|
||||||
|
} else {
|
||||||
|
CsLinePO csLinePO = this.baseMapper.selectOne(new LambdaQueryWrapper<CsLinePO>().eq(CsLinePO::getLineId,id));
|
||||||
|
LineDetailDataVO lineDetailDataVO = new LineDetailDataVO();
|
||||||
|
|
||||||
|
//lineDetailDataVO.setScale(dicDataFeignClient.getDicDataById(voltageMapper.selectById(voId).getScale()).getData().getName());
|
||||||
|
//Device device = deviceMapper.selectById(devId);
|
||||||
|
//lineDetailDataVO.setComFlag(PubUtils.comFlag(device.getComFlag()));
|
||||||
|
//lineDetailDataVO.setRunFlag(PubUtils.lineRunFlag(lineDetail.getRunFlag()));
|
||||||
|
//lineDetailDataVO.setIp(device.getIp());
|
||||||
|
//lineDetailDataVO.setLoginTime(device.getLoginTime());
|
||||||
|
//lineDetailDataVO.setDevId(device.getId());
|
||||||
|
//lineDetailDataVO.setBusinessType(dicDataFeignClient.getDicDataById(lineDetail.getBusinessType()).getData().getName());
|
||||||
|
//lineDetailDataVO.setLoadType(dicDataFeignClient.getDicDataById(lineDetail.getLoadType()).getData().getName());
|
||||||
|
lineDetailDataVO.setObjName(csLinePO.getMonitorUser());
|
||||||
|
lineDetailDataVO.setLineId(csLinePO.getLineId());
|
||||||
|
lineDetailDataVO.setPtType(PubUtils.ptType(csLinePO.getConType()));
|
||||||
|
//lineDetailDataVO.setPt(lineDetail.getPt1() + "/" + lineDetail.getPt2());
|
||||||
|
//lineDetailDataVO.setCt(lineDetail.getCt1() + "/" + lineDetail.getCt2());
|
||||||
|
lineDetailDataVO.setDealCapacity(csLinePO.getProtocolCapacity().floatValue());
|
||||||
|
lineDetailDataVO.setDevCapacity(csLinePO.getDevCapacity().floatValue());
|
||||||
|
lineDetailDataVO.setShortCapacity(csLinePO.getShortCircuitCapacity().floatValue());
|
||||||
|
lineDetailDataVO.setStandardCapacity(csLinePO.getBasicCapacity().floatValue());
|
||||||
|
lineDetailDataVO.setTimeInterval(csLinePO.getLineInterval());
|
||||||
|
|
||||||
|
return lineDetailDataVO;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private String getRunStatusDescription(Integer runStatus) {
|
private String getRunStatusDescription(Integer runStatus) {
|
||||||
// 0:运行;1:检修;2:停运;3:调试;4:退运
|
// 0:运行;1:检修;2:停运;3:调试;4:退运
|
||||||
switch (runStatus) {
|
switch (runStatus) {
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,959 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="com.njcn.csharmonic.mapper.report.ReportMapper">
|
||||||
|
<select id="getVirtualDataI" resultType="com.njcn.harmonic.pojo.vo.ReportValue">
|
||||||
|
SELECT
|
||||||
|
phasic_type AS phaseType,
|
||||||
|
AVG( CASE WHEN value_type = 'AVG' THEN rms END ) AS meanValue,
|
||||||
|
MIN( CASE WHEN value_type = 'MIN' THEN rms END ) AS minValue,
|
||||||
|
MAX( CASE WHEN value_type = 'MAX' THEN rms END ) AS fmaxValue,
|
||||||
|
MAX( CASE WHEN rankSum = #{param.count} THEN rms END ) AS cp95Value
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
phasic_type,
|
||||||
|
value_type,
|
||||||
|
rms,
|
||||||
|
rankSum
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
phasic_type,
|
||||||
|
value_type,
|
||||||
|
rms,
|
||||||
|
@rankSum := IF( @CI := phasic_type, @rankSum + 1, 1 ) AS rankSum,
|
||||||
|
@CI := phasic_type
|
||||||
|
FROM
|
||||||
|
r_stat_data_i_d
|
||||||
|
<where>
|
||||||
|
phasic_type IN ( 'A', 'B', 'C' )
|
||||||
|
and quality_flag = 0
|
||||||
|
<if test="param.startTime != null and param.startTime != ''">
|
||||||
|
and time >= #{param.startTime}
|
||||||
|
</if>
|
||||||
|
<if test="param.endTime != null and param.endTime != ''">
|
||||||
|
and time <= #{param.endTime}
|
||||||
|
</if>
|
||||||
|
<if test="param.lineId != null and param.lineId != ''">
|
||||||
|
and line_id = #{param.lineId}
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
ORDER BY
|
||||||
|
phasic_type,
|
||||||
|
(
|
||||||
|
CASE
|
||||||
|
WHEN value_type = 'CP95' THEN 1
|
||||||
|
WHEN value_type = 'MAX' THEN 2
|
||||||
|
WHEN value_type = 'MIN' THEN 3
|
||||||
|
WHEN value_type = 'AVG' THEN 4
|
||||||
|
ELSE 5
|
||||||
|
END
|
||||||
|
),
|
||||||
|
rms DESC
|
||||||
|
) AS t1
|
||||||
|
) a
|
||||||
|
GROUP BY
|
||||||
|
phasic_type;
|
||||||
|
</select>
|
||||||
|
<select id="getVirtualDataV" resultType="com.njcn.harmonic.pojo.vo.ReportValue">
|
||||||
|
SELECT
|
||||||
|
phasic_type AS phaseType,
|
||||||
|
AVG( CASE WHEN value_type = 'AVG' THEN rms END ) AS meanValue,
|
||||||
|
MIN( CASE WHEN value_type = 'MIN' THEN rms END ) AS minValue,
|
||||||
|
MAX( CASE WHEN value_type = 'MAX' THEN rms END ) AS fmaxValue,
|
||||||
|
MAX( CASE WHEN rankSum = #{param.count} THEN rms END ) AS cp95Value
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
phasic_type,
|
||||||
|
value_type,
|
||||||
|
rms,
|
||||||
|
rankSum
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
phasic_type,
|
||||||
|
value_type,
|
||||||
|
rms,
|
||||||
|
@rankSum := IF( @CI = phasic_type, @rankSum + 1, 1 ) AS rankSum,
|
||||||
|
@CI := phasic_type
|
||||||
|
FROM
|
||||||
|
r_stat_data_v_d
|
||||||
|
<where>
|
||||||
|
phasic_type IN ( 'A', 'B', 'C' )
|
||||||
|
and quality_flag = 0
|
||||||
|
<if test="param.startTime != null and param.startTime != ''">
|
||||||
|
and time >= #{param.startTime}
|
||||||
|
</if>
|
||||||
|
<if test="param.endTime != null and param.endTime != ''">
|
||||||
|
and time <= #{param.endTime}
|
||||||
|
</if>
|
||||||
|
<if test="param.lineId != null and param.lineId != ''">
|
||||||
|
and line_id = #{param.lineId}
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
ORDER BY
|
||||||
|
phasic_type,
|
||||||
|
(
|
||||||
|
CASE
|
||||||
|
WHEN value_type = 'CP95' THEN 1
|
||||||
|
WHEN value_type = 'MAX' THEN 2
|
||||||
|
WHEN value_type = 'MIN' THEN 3
|
||||||
|
WHEN value_type = 'AVG' THEN 4
|
||||||
|
ELSE 5
|
||||||
|
END
|
||||||
|
),
|
||||||
|
rms DESC
|
||||||
|
) AS t1
|
||||||
|
) a
|
||||||
|
GROUP BY
|
||||||
|
phasic_type
|
||||||
|
</select>
|
||||||
|
<select id="getTotalCP95Day" resultType="java.lang.Integer">
|
||||||
|
SELECT
|
||||||
|
count( rms ) total
|
||||||
|
FROM
|
||||||
|
r_stat_data_v_d
|
||||||
|
<where>
|
||||||
|
phasic_type IN ( 'A' )
|
||||||
|
AND value_type = "CP95"
|
||||||
|
and quality_flag = 0
|
||||||
|
<if test="param.startTime != null and param.startTime != ''">
|
||||||
|
and time >= #{param.startTime}
|
||||||
|
</if>
|
||||||
|
<if test="param.endTime != null and param.endTime != ''">
|
||||||
|
and time <= #{param.endTime}
|
||||||
|
</if>
|
||||||
|
<if test="param.lineId != null and param.lineId != ''">
|
||||||
|
and line_id = #{param.lineId}
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
</select>
|
||||||
|
<select id="getTotalPltCP95Day" resultType="java.lang.Integer">
|
||||||
|
SELECT
|
||||||
|
count( plt ) total
|
||||||
|
FROM
|
||||||
|
r_stat_data_plt_d
|
||||||
|
<where>
|
||||||
|
phasic_type IN ( 'A' )
|
||||||
|
AND value_type = "CP95"
|
||||||
|
and quality_flag = 0
|
||||||
|
<if test="param.startTime != null and param.startTime != ''">
|
||||||
|
and time >= #{param.startTime}
|
||||||
|
</if>
|
||||||
|
<if test="param.endTime != null and param.endTime != ''">
|
||||||
|
and time <= #{param.endTime}
|
||||||
|
</if>
|
||||||
|
<if test="param.lineId != null and param.lineId != ''">
|
||||||
|
and line_id = #{param.lineId}
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
</select>
|
||||||
|
<select id="getTotalPstCP95Day" resultType="java.lang.Integer">
|
||||||
|
SELECT
|
||||||
|
count( plt ) total
|
||||||
|
FROM
|
||||||
|
r_stat_data_flicker_d
|
||||||
|
<where>
|
||||||
|
phasic_type IN ( 'A' )
|
||||||
|
AND value_type = "CP95"
|
||||||
|
and quality_flag = 0
|
||||||
|
<if test="param.startTime != null and param.startTime != ''">
|
||||||
|
and time >= #{param.startTime}
|
||||||
|
</if>
|
||||||
|
<if test="param.endTime != null and param.endTime != ''">
|
||||||
|
and time <= #{param.endTime}
|
||||||
|
</if>
|
||||||
|
<if test="param.lineId != null and param.lineId != ''">
|
||||||
|
and line_id = #{param.lineId}
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
</select>
|
||||||
|
<select id="getVVirtualData" resultType="com.njcn.harmonic.pojo.vo.ReportValue">
|
||||||
|
SELECT
|
||||||
|
phasic_type AS phaseType,
|
||||||
|
AVG( CASE WHEN value_type = 'AVG' THEN rms END ) AS meanValue,
|
||||||
|
MIN( CASE WHEN value_type = 'MIN' THEN rms END ) AS minValue,
|
||||||
|
MAX( CASE WHEN value_type = 'MAX' THEN rms END ) AS fmaxValue,
|
||||||
|
MAX( CASE WHEN rankSum = #{param.count} THEN rms END ) AS cp95Value
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
phasic_type,
|
||||||
|
value_type,
|
||||||
|
rms,
|
||||||
|
rankSum
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
phasic_type,
|
||||||
|
value_type,
|
||||||
|
rms_lvr as rms,
|
||||||
|
@rankSum := IF( @CI = phasic_type, @rankSum + 1, 1 ) AS rankSum,
|
||||||
|
@CI := phasic_type
|
||||||
|
FROM
|
||||||
|
r_stat_data_v_d
|
||||||
|
<where>
|
||||||
|
phasic_type IN ( 'A', 'B', 'C' )
|
||||||
|
and quality_flag = 0
|
||||||
|
<if test="param.startTime != null and param.startTime != ''">
|
||||||
|
and time >= #{param.startTime}
|
||||||
|
</if>
|
||||||
|
<if test="param.endTime != null and param.endTime != ''">
|
||||||
|
and time <= #{param.endTime}
|
||||||
|
</if>
|
||||||
|
<if test="param.lineId != null and param.lineId != ''">
|
||||||
|
and line_id = #{param.lineId}
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
ORDER BY
|
||||||
|
phasic_type,
|
||||||
|
(
|
||||||
|
CASE
|
||||||
|
WHEN value_type = 'CP95' THEN 1
|
||||||
|
WHEN value_type = 'MAX' THEN 2
|
||||||
|
WHEN value_type = 'MIN' THEN 3
|
||||||
|
WHEN value_type = 'AVG' THEN 4
|
||||||
|
ELSE 5
|
||||||
|
END
|
||||||
|
),
|
||||||
|
rms_lvr DESC
|
||||||
|
) AS t1
|
||||||
|
) a
|
||||||
|
GROUP BY
|
||||||
|
phasic_type
|
||||||
|
</select>
|
||||||
|
<select id="getPowerP" resultType="com.njcn.harmonic.pojo.vo.ReportValue">
|
||||||
|
SELECT
|
||||||
|
phasic_type AS phaseType,
|
||||||
|
AVG( CASE WHEN value_type = 'AVG' THEN rms END ) AS meanValue,
|
||||||
|
MIN( CASE WHEN value_type = 'MIN' THEN rms END ) AS minValue,
|
||||||
|
MAX( CASE WHEN value_type = 'MAX' THEN rms END ) AS fmaxValue,
|
||||||
|
MAX( CASE WHEN rankSum = #{param.count} THEN rms END ) AS cp95Value
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
phasic_type,
|
||||||
|
value_type,
|
||||||
|
rms,
|
||||||
|
rankSum
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
phasic_type,
|
||||||
|
value_type,
|
||||||
|
p as rms,
|
||||||
|
@rankSum :=
|
||||||
|
IF
|
||||||
|
( @CI = phasic_type, @rankSum + 1, 1 ) AS rankSum,
|
||||||
|
@CI := phasic_type
|
||||||
|
FROM
|
||||||
|
r_stat_data_harmpower_p_d
|
||||||
|
<where>
|
||||||
|
phasic_type IN ( 'A', 'B', 'C' ,'T')
|
||||||
|
and quality_flag = 0
|
||||||
|
<if test="param.startTime != null and param.startTime != ''">
|
||||||
|
and time >= #{param.startTime}
|
||||||
|
</if>
|
||||||
|
<if test="param.endTime != null and param.endTime != ''">
|
||||||
|
and time <= #{param.endTime}
|
||||||
|
</if>
|
||||||
|
<if test="param.lineId != null and param.lineId != ''">
|
||||||
|
and line_id = #{param.lineId}
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
ORDER BY
|
||||||
|
phasic_type,
|
||||||
|
(
|
||||||
|
CASE
|
||||||
|
WHEN value_type = 'CP95' THEN
|
||||||
|
1
|
||||||
|
WHEN value_type = 'MAX' THEN
|
||||||
|
2
|
||||||
|
WHEN value_type = 'MIN' THEN
|
||||||
|
3
|
||||||
|
WHEN value_type = 'AVG' THEN
|
||||||
|
4 ELSE 5
|
||||||
|
END
|
||||||
|
),
|
||||||
|
p DESC
|
||||||
|
) AS t1
|
||||||
|
) a
|
||||||
|
GROUP BY
|
||||||
|
phasic_type
|
||||||
|
</select>
|
||||||
|
<select id="getPF" resultType="com.njcn.harmonic.pojo.vo.ReportValue">
|
||||||
|
SELECT
|
||||||
|
phasic_type AS phaseType,
|
||||||
|
AVG( CASE WHEN value_type = 'AVG' THEN rms END ) AS meanValue,
|
||||||
|
MIN( CASE WHEN value_type = 'MIN' THEN rms END ) AS minValue,
|
||||||
|
MAX( CASE WHEN value_type = 'MAX' THEN rms END ) AS fmaxValue,
|
||||||
|
MAX( CASE WHEN rankSum = #{param.count} THEN rms END ) AS cp95Value
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
phasic_type,
|
||||||
|
value_type,
|
||||||
|
rms,
|
||||||
|
rankSum
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
phasic_type,
|
||||||
|
value_type,
|
||||||
|
pf as rms,
|
||||||
|
@rankSum :=
|
||||||
|
IF
|
||||||
|
( @CI = phasic_type, @rankSum + 1, 1 ) AS rankSum,
|
||||||
|
@CI := phasic_type
|
||||||
|
FROM
|
||||||
|
r_stat_data_harmpower_p_d
|
||||||
|
<where>
|
||||||
|
phasic_type IN ( 'A', 'B', 'C' ,'T')
|
||||||
|
and quality_flag = 0
|
||||||
|
<if test="param.startTime != null and param.startTime != ''">
|
||||||
|
and time >= #{param.startTime}
|
||||||
|
</if>
|
||||||
|
<if test="param.endTime != null and param.endTime != ''">
|
||||||
|
and time <= #{param.endTime}
|
||||||
|
</if>
|
||||||
|
<if test="param.lineId != null and param.lineId != ''">
|
||||||
|
and line_id = #{param.lineId}
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
ORDER BY
|
||||||
|
phasic_type,
|
||||||
|
(
|
||||||
|
CASE
|
||||||
|
WHEN value_type = 'CP95' THEN
|
||||||
|
1
|
||||||
|
WHEN value_type = 'MAX' THEN
|
||||||
|
2
|
||||||
|
WHEN value_type = 'MIN' THEN
|
||||||
|
3
|
||||||
|
WHEN value_type = 'AVG' THEN
|
||||||
|
4 ELSE 5
|
||||||
|
END
|
||||||
|
),
|
||||||
|
pf DESC
|
||||||
|
) AS t1
|
||||||
|
) a
|
||||||
|
GROUP BY
|
||||||
|
phasic_type
|
||||||
|
</select>
|
||||||
|
<select id="getPowerQ" resultType="com.njcn.harmonic.pojo.vo.ReportValue">
|
||||||
|
SELECT
|
||||||
|
phasic_type AS phaseType,
|
||||||
|
AVG( CASE WHEN value_type = 'AVG' THEN rms END ) AS meanValue,
|
||||||
|
MIN( CASE WHEN value_type = 'MIN' THEN rms END ) AS minValue,
|
||||||
|
MAX( CASE WHEN value_type = 'MAX' THEN rms END ) AS fmaxValue,
|
||||||
|
MAX( CASE WHEN rankSum = #{param.count} THEN rms END ) AS cp95Value
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
phasic_type,
|
||||||
|
value_type,
|
||||||
|
rms,
|
||||||
|
rankSum
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
phasic_type,
|
||||||
|
value_type,
|
||||||
|
q as rms,
|
||||||
|
@rankSum :=
|
||||||
|
IF
|
||||||
|
( @CI = phasic_type, @rankSum + 1, 1 ) AS rankSum,
|
||||||
|
@CI := phasic_type
|
||||||
|
FROM
|
||||||
|
r_stat_data_harmpower_q_d
|
||||||
|
<where>
|
||||||
|
phasic_type IN ( 'A', 'B', 'C' ,'T')
|
||||||
|
and quality_flag = 0
|
||||||
|
<if test="param.startTime != null and param.startTime != ''">
|
||||||
|
and time >= #{param.startTime}
|
||||||
|
</if>
|
||||||
|
<if test="param.endTime != null and param.endTime != ''">
|
||||||
|
and time <= #{param.endTime}
|
||||||
|
</if>
|
||||||
|
<if test="param.lineId != null and param.lineId != ''">
|
||||||
|
and line_id = #{param.lineId}
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
ORDER BY
|
||||||
|
phasic_type,
|
||||||
|
(
|
||||||
|
CASE
|
||||||
|
WHEN value_type = 'CP95' THEN
|
||||||
|
1
|
||||||
|
WHEN value_type = 'MAX' THEN
|
||||||
|
2
|
||||||
|
WHEN value_type = 'MIN' THEN
|
||||||
|
3
|
||||||
|
WHEN value_type = 'AVG' THEN
|
||||||
|
4 ELSE 5
|
||||||
|
END
|
||||||
|
),
|
||||||
|
q DESC
|
||||||
|
) AS t1
|
||||||
|
) a
|
||||||
|
GROUP BY
|
||||||
|
phasic_type
|
||||||
|
</select>
|
||||||
|
<select id="getPowerS" resultType="com.njcn.harmonic.pojo.vo.ReportValue">
|
||||||
|
SELECT
|
||||||
|
phasic_type AS phaseType,
|
||||||
|
AVG( CASE WHEN value_type = 'AVG' THEN rms END ) AS meanValue,
|
||||||
|
MIN( CASE WHEN value_type = 'MIN' THEN rms END ) AS minValue,
|
||||||
|
MAX( CASE WHEN value_type = 'MAX' THEN rms END ) AS fmaxValue,
|
||||||
|
MAX( CASE WHEN rankSum = #{param.count} THEN rms END ) AS cp95Value
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
phasic_type,
|
||||||
|
value_type,
|
||||||
|
rms,
|
||||||
|
rankSum
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
phasic_type,
|
||||||
|
value_type,
|
||||||
|
s as rms,
|
||||||
|
@rankSum :=
|
||||||
|
IF
|
||||||
|
( @CI = phasic_type, @rankSum + 1, 1 ) AS rankSum,
|
||||||
|
@CI := phasic_type
|
||||||
|
FROM
|
||||||
|
r_stat_data_harmpower_s_d
|
||||||
|
<where>
|
||||||
|
phasic_type IN ( 'A', 'B', 'C' ,'T')
|
||||||
|
and quality_flag = 0
|
||||||
|
<if test="param.startTime != null and param.startTime != ''">
|
||||||
|
and time >= #{param.startTime}
|
||||||
|
</if>
|
||||||
|
<if test="param.endTime != null and param.endTime != ''">
|
||||||
|
and time <= #{param.endTime}
|
||||||
|
</if>
|
||||||
|
<if test="param.lineId != null and param.lineId != ''">
|
||||||
|
and line_id = #{param.lineId}
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
ORDER BY
|
||||||
|
phasic_type,
|
||||||
|
(
|
||||||
|
CASE
|
||||||
|
WHEN value_type = 'CP95' THEN
|
||||||
|
1
|
||||||
|
WHEN value_type = 'MAX' THEN
|
||||||
|
2
|
||||||
|
WHEN value_type = 'MIN' THEN
|
||||||
|
3
|
||||||
|
WHEN value_type = 'AVG' THEN
|
||||||
|
4 ELSE 5
|
||||||
|
END
|
||||||
|
),
|
||||||
|
s DESC
|
||||||
|
) AS t1
|
||||||
|
) a
|
||||||
|
GROUP BY
|
||||||
|
phasic_type
|
||||||
|
</select>
|
||||||
|
<select id="getFlickerData" resultType="com.njcn.harmonic.pojo.vo.ReportValue">
|
||||||
|
SELECT
|
||||||
|
phasic_type AS phaseType,
|
||||||
|
AVG( CASE WHEN value_type = 'AVG' THEN rms END ) AS meanValue,
|
||||||
|
MIN( CASE WHEN value_type = 'MIN' THEN rms END ) AS minValue,
|
||||||
|
MAX( CASE WHEN value_type = 'MAX' THEN rms END ) AS fmaxValue,
|
||||||
|
MAX( CASE WHEN rankSum = #{param.count} THEN rms END ) AS cp95Value
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
phasic_type,
|
||||||
|
value_type,
|
||||||
|
rms,
|
||||||
|
rankSum
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
phasic_type,
|
||||||
|
value_type,
|
||||||
|
plt as rms,
|
||||||
|
@rankSum :=
|
||||||
|
IF
|
||||||
|
( @CI = phasic_type, @rankSum + 1, 1 ) AS rankSum,
|
||||||
|
@CI := phasic_type
|
||||||
|
FROM
|
||||||
|
r_stat_data_flicker_d
|
||||||
|
<where>
|
||||||
|
phasic_type IN ( 'A', 'B', 'C' )
|
||||||
|
and quality_flag = 0
|
||||||
|
<if test="param.startTime != null and param.startTime != ''">
|
||||||
|
and time >= #{param.startTime}
|
||||||
|
</if>
|
||||||
|
<if test="param.endTime != null and param.endTime != ''">
|
||||||
|
and time <= #{param.endTime}
|
||||||
|
</if>
|
||||||
|
<if test="param.lineId != null and param.lineId != ''">
|
||||||
|
and line_id = #{param.lineId}
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
ORDER BY
|
||||||
|
phasic_type,
|
||||||
|
(
|
||||||
|
CASE
|
||||||
|
WHEN value_type = 'CP95' THEN
|
||||||
|
1
|
||||||
|
WHEN value_type = 'MAX' THEN
|
||||||
|
2
|
||||||
|
WHEN value_type = 'MIN' THEN
|
||||||
|
3
|
||||||
|
WHEN value_type = 'AVG' THEN
|
||||||
|
4 ELSE 5
|
||||||
|
END
|
||||||
|
),
|
||||||
|
plt DESC
|
||||||
|
) AS t1
|
||||||
|
) a
|
||||||
|
GROUP BY
|
||||||
|
phasic_type
|
||||||
|
</select>
|
||||||
|
<select id="getLFlickerData" resultType="com.njcn.harmonic.pojo.vo.ReportValue">
|
||||||
|
SELECT
|
||||||
|
phasic_type AS phaseType,
|
||||||
|
AVG( CASE WHEN value_type = 'AVG' THEN rms END ) AS meanValue,
|
||||||
|
MIN( CASE WHEN value_type = 'MIN' THEN rms END ) AS minValue,
|
||||||
|
MAX( CASE WHEN value_type = 'MAX' THEN rms END ) AS fmaxValue,
|
||||||
|
MAX( CASE WHEN rankSum = #{param.count} THEN rms END ) AS cp95Value
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
phasic_type,
|
||||||
|
value_type,
|
||||||
|
rms,
|
||||||
|
rankSum
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
phasic_type,
|
||||||
|
value_type,
|
||||||
|
pst as rms,
|
||||||
|
@rankSum :=
|
||||||
|
IF
|
||||||
|
( @CI = phasic_type, @rankSum + 1, 1 ) AS rankSum,
|
||||||
|
@CI := phasic_type
|
||||||
|
FROM
|
||||||
|
r_stat_data_flicker_d
|
||||||
|
<where>
|
||||||
|
phasic_type IN ( 'A', 'B', 'C')
|
||||||
|
and quality_flag = 0
|
||||||
|
<if test="param.startTime != null and param.startTime != ''">
|
||||||
|
and time >= #{param.startTime}
|
||||||
|
</if>
|
||||||
|
<if test="param.endTime != null and param.endTime != ''">
|
||||||
|
and time <= #{param.endTime}
|
||||||
|
</if>
|
||||||
|
<if test="param.lineId != null and param.lineId != ''">
|
||||||
|
and line_id = #{param.lineId}
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
ORDER BY
|
||||||
|
phasic_type,
|
||||||
|
(
|
||||||
|
CASE
|
||||||
|
WHEN value_type = 'CP95' THEN
|
||||||
|
1
|
||||||
|
WHEN value_type = 'MAX' THEN
|
||||||
|
2
|
||||||
|
WHEN value_type = 'MIN' THEN
|
||||||
|
3
|
||||||
|
WHEN value_type = 'AVG' THEN
|
||||||
|
4 ELSE 5
|
||||||
|
END
|
||||||
|
),
|
||||||
|
pst DESC
|
||||||
|
) AS t1
|
||||||
|
) a
|
||||||
|
GROUP BY
|
||||||
|
phasic_type
|
||||||
|
</select>
|
||||||
|
<select id="getUVdeviationData" resultType="com.njcn.harmonic.pojo.vo.ReportValue">
|
||||||
|
SELECT
|
||||||
|
phasic_type AS phaseType,
|
||||||
|
AVG( CASE WHEN value_type = 'AVG' THEN rms END ) AS meanValue,
|
||||||
|
MIN( CASE WHEN value_type = 'MIN' THEN rms END ) AS minValue,
|
||||||
|
MAX( CASE WHEN value_type = 'MAX' THEN rms END ) AS fmaxValue,
|
||||||
|
MAX( CASE WHEN rankSum = #{param.count} THEN rms END ) AS cp95Value
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
phasic_type,
|
||||||
|
value_type,
|
||||||
|
rms,
|
||||||
|
rankSum
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
phasic_type,
|
||||||
|
value_type,
|
||||||
|
vu_dev as rms,
|
||||||
|
@rankSum := IF( @CI := phasic_type, @rankSum + 1, 1 ) AS rankSum,
|
||||||
|
@CI := phasic_type
|
||||||
|
FROM
|
||||||
|
r_stat_data_v_d
|
||||||
|
<where>
|
||||||
|
phasic_type IN ( 'A', 'B', 'C' )
|
||||||
|
and quality_flag = 0
|
||||||
|
<if test="param.startTime != null and param.startTime != ''">
|
||||||
|
and time >= #{param.startTime}
|
||||||
|
</if>
|
||||||
|
<if test="param.endTime != null and param.endTime != ''">
|
||||||
|
and time <= #{param.endTime}
|
||||||
|
</if>
|
||||||
|
<if test="param.lineId != null and param.lineId != ''">
|
||||||
|
and line_id = #{param.lineId}
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
ORDER BY
|
||||||
|
phasic_type,
|
||||||
|
(
|
||||||
|
CASE
|
||||||
|
WHEN value_type = 'CP95' THEN 1
|
||||||
|
WHEN value_type = 'MAX' THEN 2
|
||||||
|
WHEN value_type = 'MIN' THEN 3
|
||||||
|
WHEN value_type = 'AVG' THEN 4
|
||||||
|
ELSE 5
|
||||||
|
END
|
||||||
|
),
|
||||||
|
vu_dev DESC
|
||||||
|
) AS t1
|
||||||
|
) a
|
||||||
|
GROUP BY
|
||||||
|
phasic_type;
|
||||||
|
</select>
|
||||||
|
<select id="getLVdeviationData" resultType="com.njcn.harmonic.pojo.vo.ReportValue">
|
||||||
|
SELECT
|
||||||
|
phasic_type AS phaseType,
|
||||||
|
AVG( CASE WHEN value_type = 'AVG' THEN rms END ) AS meanValue,
|
||||||
|
MIN( CASE WHEN value_type = 'MIN' THEN rms END ) AS minValue,
|
||||||
|
MAX( CASE WHEN value_type = 'MAX' THEN rms END ) AS fmaxValue,
|
||||||
|
MAX( CASE WHEN rankSum = #{param.count} THEN rms END ) AS cp95Value
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
phasic_type,
|
||||||
|
value_type,
|
||||||
|
rms,
|
||||||
|
rankSum
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
phasic_type,
|
||||||
|
value_type,
|
||||||
|
vl_dev as rms,
|
||||||
|
@rankSum := IF( @CI := phasic_type, @rankSum + 1, 1 ) AS rankSum,
|
||||||
|
@CI := phasic_type
|
||||||
|
FROM
|
||||||
|
r_stat_data_v_d
|
||||||
|
<where>
|
||||||
|
phasic_type IN ( 'A', 'B', 'C' )
|
||||||
|
and quality_flag = 0
|
||||||
|
<if test="param.startTime != null and param.startTime != ''">
|
||||||
|
and time >= #{param.startTime}
|
||||||
|
</if>
|
||||||
|
<if test="param.endTime != null and param.endTime != ''">
|
||||||
|
and time <= #{param.endTime}
|
||||||
|
</if>
|
||||||
|
<if test="param.lineId != null and param.lineId != ''">
|
||||||
|
and line_id = #{param.lineId}
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
ORDER BY
|
||||||
|
phasic_type,
|
||||||
|
(
|
||||||
|
CASE
|
||||||
|
WHEN value_type = 'CP95' THEN 1
|
||||||
|
WHEN value_type = 'MAX' THEN 2
|
||||||
|
WHEN value_type = 'MIN' THEN 3
|
||||||
|
WHEN value_type = 'AVG' THEN 4
|
||||||
|
ELSE 5
|
||||||
|
END
|
||||||
|
),
|
||||||
|
vl_dev DESC
|
||||||
|
) AS t1
|
||||||
|
) a
|
||||||
|
GROUP BY
|
||||||
|
phasic_type;
|
||||||
|
</select>
|
||||||
|
<select id="getDistortionDataV" resultType="com.njcn.harmonic.pojo.vo.ReportValue">
|
||||||
|
SELECT
|
||||||
|
phasic_type AS phaseType,
|
||||||
|
AVG( CASE WHEN value_type = 'AVG' THEN rms END ) AS meanValue,
|
||||||
|
MIN( CASE WHEN value_type = 'MIN' THEN rms END ) AS minValue,
|
||||||
|
MAX( CASE WHEN value_type = 'MAX' THEN rms END ) AS fmaxValue,
|
||||||
|
MAX( CASE WHEN rankSum = #{param.count} THEN rms END ) AS cp95Value
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
phasic_type,
|
||||||
|
value_type,
|
||||||
|
rms,
|
||||||
|
rankSum
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
phasic_type,
|
||||||
|
value_type,
|
||||||
|
v_thd as rms,
|
||||||
|
@rankSum := IF( @CI := phasic_type, @rankSum + 1, 1 ) AS rankSum,
|
||||||
|
@CI := phasic_type
|
||||||
|
FROM
|
||||||
|
r_stat_data_v_d
|
||||||
|
<where>
|
||||||
|
phasic_type IN ( 'A', 'B', 'C' )
|
||||||
|
and quality_flag = 0
|
||||||
|
<if test="param.startTime != null and param.startTime != ''">
|
||||||
|
and time >= #{param.startTime}
|
||||||
|
</if>
|
||||||
|
<if test="param.endTime != null and param.endTime != ''">
|
||||||
|
and time <= #{param.endTime}
|
||||||
|
</if>
|
||||||
|
<if test="param.lineId != null and param.lineId != ''">
|
||||||
|
and line_id = #{param.lineId}
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
ORDER BY
|
||||||
|
phasic_type,
|
||||||
|
(
|
||||||
|
CASE
|
||||||
|
WHEN value_type = 'CP95' THEN 1
|
||||||
|
WHEN value_type = 'MAX' THEN 2
|
||||||
|
WHEN value_type = 'MIN' THEN 3
|
||||||
|
WHEN value_type = 'AVG' THEN 4
|
||||||
|
ELSE 5
|
||||||
|
END
|
||||||
|
),
|
||||||
|
v_thd DESC
|
||||||
|
) AS t1
|
||||||
|
) a
|
||||||
|
GROUP BY
|
||||||
|
phasic_type;
|
||||||
|
</select>
|
||||||
|
<select id="getDistortionDataI" resultType="com.njcn.harmonic.pojo.vo.ReportValue">
|
||||||
|
SELECT
|
||||||
|
phasic_type AS phaseType,
|
||||||
|
AVG( CASE WHEN value_type = 'AVG' THEN rms END ) AS meanValue,
|
||||||
|
MIN( CASE WHEN value_type = 'MIN' THEN rms END ) AS minValue,
|
||||||
|
MAX( CASE WHEN value_type = 'MAX' THEN rms END ) AS fmaxValue,
|
||||||
|
MAX( CASE WHEN rankSum = #{param.count} THEN rms END ) AS cp95Value
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
phasic_type,
|
||||||
|
value_type,
|
||||||
|
rms,
|
||||||
|
rankSum
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
phasic_type,
|
||||||
|
value_type,
|
||||||
|
i_thd as rms,
|
||||||
|
@rankSum := IF( @CI := phasic_type, @rankSum + 1, 1 ) AS rankSum,
|
||||||
|
@CI := phasic_type
|
||||||
|
FROM
|
||||||
|
r_stat_data_i_d
|
||||||
|
<where>
|
||||||
|
phasic_type IN ( 'A', 'B', 'C' )
|
||||||
|
and quality_flag = 0
|
||||||
|
<if test="param.startTime != null and param.startTime != ''">
|
||||||
|
and time >= #{param.startTime}
|
||||||
|
</if>
|
||||||
|
<if test="param.endTime != null and param.endTime != ''">
|
||||||
|
and time <= #{param.endTime}
|
||||||
|
</if>
|
||||||
|
<if test="param.lineId != null and param.lineId != ''">
|
||||||
|
and line_id = #{param.lineId}
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
ORDER BY
|
||||||
|
phasic_type,
|
||||||
|
(
|
||||||
|
CASE
|
||||||
|
WHEN value_type = 'CP95' THEN 1
|
||||||
|
WHEN value_type = 'MAX' THEN 2
|
||||||
|
WHEN value_type = 'MIN' THEN 3
|
||||||
|
WHEN value_type = 'AVG' THEN 4
|
||||||
|
ELSE 5
|
||||||
|
END
|
||||||
|
),
|
||||||
|
i_thd DESC
|
||||||
|
) AS t1
|
||||||
|
) a
|
||||||
|
GROUP BY
|
||||||
|
phasic_type;
|
||||||
|
</select>
|
||||||
|
<select id="getFrequencyData" resultType="com.njcn.harmonic.pojo.vo.ReportValue">
|
||||||
|
SELECT
|
||||||
|
phasic_type AS phaseType,
|
||||||
|
AVG( CASE WHEN value_type = 'AVG' THEN rms END ) AS meanValue,
|
||||||
|
MIN( CASE WHEN value_type = 'MIN' THEN rms END ) AS minValue,
|
||||||
|
MAX( CASE WHEN value_type = 'MAX' THEN rms END ) AS fmaxValue,
|
||||||
|
MAX( CASE WHEN rankSum = #{param.count} THEN rms END ) AS cp95Value
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
phasic_type,
|
||||||
|
value_type,
|
||||||
|
rms,
|
||||||
|
rankSum
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
phasic_type,
|
||||||
|
value_type,
|
||||||
|
freq as rms,
|
||||||
|
@rankSum := IF( @CI := phasic_type, @rankSum + 1, 1 ) AS rankSum,
|
||||||
|
@CI := phasic_type
|
||||||
|
FROM
|
||||||
|
r_stat_data_v_d
|
||||||
|
<where>
|
||||||
|
phasic_type = 'T'
|
||||||
|
and quality_flag = 0
|
||||||
|
<if test="param.startTime != null and param.startTime != ''">
|
||||||
|
and time >= #{param.startTime}
|
||||||
|
</if>
|
||||||
|
<if test="param.endTime != null and param.endTime != ''">
|
||||||
|
and time <= #{param.endTime}
|
||||||
|
</if>
|
||||||
|
<if test="param.lineId != null and param.lineId != ''">
|
||||||
|
and line_id = #{param.lineId}
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
ORDER BY
|
||||||
|
phasic_type,
|
||||||
|
(
|
||||||
|
CASE
|
||||||
|
WHEN value_type = 'CP95' THEN 1
|
||||||
|
WHEN value_type = 'MAX' THEN 2
|
||||||
|
WHEN value_type = 'MIN' THEN 3
|
||||||
|
WHEN value_type = 'AVG' THEN 4
|
||||||
|
ELSE 5
|
||||||
|
END
|
||||||
|
),
|
||||||
|
freq DESC
|
||||||
|
) AS t1
|
||||||
|
) a
|
||||||
|
GROUP BY
|
||||||
|
phasic_type;
|
||||||
|
</select>
|
||||||
|
<select id="getDEVFrequencyData" resultType="com.njcn.harmonic.pojo.vo.ReportValue">
|
||||||
|
SELECT
|
||||||
|
phasic_type AS phaseType,
|
||||||
|
AVG( CASE WHEN value_type = 'AVG' THEN rms END ) AS meanValue,
|
||||||
|
MIN( CASE WHEN value_type = 'MIN' THEN rms END ) AS minValue,
|
||||||
|
MAX( CASE WHEN value_type = 'MAX' THEN rms END ) AS fmaxValue,
|
||||||
|
MAX( CASE WHEN rankSum = #{param.count} THEN rms END ) AS cp95Value
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
phasic_type,
|
||||||
|
value_type,
|
||||||
|
rms,
|
||||||
|
rankSum
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
phasic_type,
|
||||||
|
value_type,
|
||||||
|
freq_dev as rms,
|
||||||
|
@rankSum := IF( @CI := phasic_type, @rankSum + 1, 1 ) AS rankSum,
|
||||||
|
@CI := phasic_type
|
||||||
|
FROM
|
||||||
|
r_stat_data_v_d
|
||||||
|
<where>
|
||||||
|
phasic_type = 'T'
|
||||||
|
and quality_flag = 0
|
||||||
|
<if test="param.startTime != null and param.startTime != ''">
|
||||||
|
and time >= #{param.startTime}
|
||||||
|
</if>
|
||||||
|
<if test="param.endTime != null and param.endTime != ''">
|
||||||
|
and time <= #{param.endTime}
|
||||||
|
</if>
|
||||||
|
<if test="param.lineId != null and param.lineId != ''">
|
||||||
|
and line_id = #{param.lineId}
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
ORDER BY
|
||||||
|
phasic_type,
|
||||||
|
(
|
||||||
|
CASE
|
||||||
|
WHEN value_type = 'CP95' THEN 1
|
||||||
|
WHEN value_type = 'MAX' THEN 2
|
||||||
|
WHEN value_type = 'MIN' THEN 3
|
||||||
|
WHEN value_type = 'AVG' THEN 4
|
||||||
|
ELSE 5
|
||||||
|
END
|
||||||
|
),
|
||||||
|
freq_dev DESC
|
||||||
|
) AS t1
|
||||||
|
) a
|
||||||
|
GROUP BY
|
||||||
|
phasic_type;
|
||||||
|
</select>
|
||||||
|
<select id="getINegData" resultType="com.njcn.harmonic.pojo.vo.ReportValue">
|
||||||
|
SELECT
|
||||||
|
phasic_type AS phaseType,
|
||||||
|
AVG( CASE WHEN value_type = 'AVG' THEN rms END ) AS meanValue,
|
||||||
|
MIN( CASE WHEN value_type = 'MIN' THEN rms END ) AS minValue,
|
||||||
|
MAX( CASE WHEN value_type = 'MAX' THEN rms END ) AS fmaxValue,
|
||||||
|
MAX( CASE WHEN rankSum = #{param.count} THEN rms END ) AS cp95Value
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
phasic_type,
|
||||||
|
value_type,
|
||||||
|
rms,
|
||||||
|
rankSum
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
phasic_type,
|
||||||
|
value_type,
|
||||||
|
i_neg as rms,
|
||||||
|
@rankSum := IF( @CI := phasic_type, @rankSum + 1, 1 ) AS rankSum,
|
||||||
|
@CI := phasic_type
|
||||||
|
FROM
|
||||||
|
r_stat_data_i_d
|
||||||
|
<where>
|
||||||
|
phasic_type IN ( 'A', 'B', 'C' )
|
||||||
|
and quality_flag = 0
|
||||||
|
<if test="param.startTime != null and param.startTime != ''">
|
||||||
|
and time >= #{param.startTime}
|
||||||
|
</if>
|
||||||
|
<if test="param.endTime != null and param.endTime != ''">
|
||||||
|
and time <= #{param.endTime}
|
||||||
|
</if>
|
||||||
|
<if test="param.lineId != null and param.lineId != ''">
|
||||||
|
and line_id = #{param.lineId}
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
ORDER BY
|
||||||
|
phasic_type,
|
||||||
|
(
|
||||||
|
CASE
|
||||||
|
WHEN value_type = 'CP95' THEN 1
|
||||||
|
WHEN value_type = 'MAX' THEN 2
|
||||||
|
WHEN value_type = 'MIN' THEN 3
|
||||||
|
WHEN value_type = 'AVG' THEN 4
|
||||||
|
ELSE 5
|
||||||
|
END
|
||||||
|
),
|
||||||
|
rms DESC
|
||||||
|
) AS t1
|
||||||
|
) a
|
||||||
|
GROUP BY
|
||||||
|
phasic_type;
|
||||||
|
</select>
|
||||||
|
|
||||||
|
</mapper>
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
package com.njcn.csharmonic.mapper.report;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.njcn.harmonic.pojo.po.day.RStatDataIDPO;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* Mapper 接口
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author wr
|
||||||
|
* @since 2023-04-17
|
||||||
|
*/
|
||||||
|
public interface RStatDataIDMapper extends BaseMapper<RStatDataIDPO> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取监测点负序电流
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<RStatDataIDPO> getINeg(@Param("list") List<String> lineList, @Param("startTime") String startTime, @Param("endTime") String endTime);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 谐波电流
|
||||||
|
*/
|
||||||
|
List<RStatDataIDPO> getI(@Param("list") List<String> lineList, @Param("startTime") String startTime, @Param("endTime") String endTime);
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package com.njcn.csharmonic.mapper.report;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.njcn.harmonic.pojo.po.day.RStatDataInharmVDPO;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description:
|
||||||
|
* @Author: wr
|
||||||
|
* @Date: 2024/7/31 9:24
|
||||||
|
*/
|
||||||
|
public interface RStatDataInharmVDMapper extends BaseMapper<RStatDataInharmVDPO> {
|
||||||
|
|
||||||
|
List<RStatDataInharmVDPO> getV(@Param("list") List<String> lineList, @Param("startTime") String startTime, @Param("endTime") String endTime);
|
||||||
|
}
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
package com.njcn.csharmonic.mapper.report;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.njcn.harmonic.pojo.po.RStatDataVD;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* Mapper 接口
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author wr
|
||||||
|
* @since 2023-03-31
|
||||||
|
*/
|
||||||
|
public interface RStatDataVDMapper extends BaseMapper<RStatDataVD> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取频率偏差、三相电压不平衡度
|
||||||
|
*/
|
||||||
|
List<RStatDataVD> getFreqDev(@Param("list") List<String> lineList, @Param("startTime") String startTime, @Param("endTime") String endTime);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取电压偏差
|
||||||
|
*/
|
||||||
|
List<RStatDataVD> getVuDev(@Param("list") List<String> lineList, @Param("startTime") String startTime, @Param("endTime") String endTime);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取电压总谐波畸变率
|
||||||
|
*/
|
||||||
|
List<RStatDataVD> getVthd(@Param("list") List<String> lineList, @Param("startTime") String startTime, @Param("endTime") String endTime);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取三相电压不平衡度
|
||||||
|
*/
|
||||||
|
List<RStatDataVD> getUnbalance(@Param("list") List<String> lineList, @Param("startTime") String startTime, @Param("endTime") String endTime);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取谐波电压
|
||||||
|
*/
|
||||||
|
List<RStatDataVD> getV(@Param("list") List<String> lineList, @Param("startTime") String startTime, @Param("endTime") String endTime);
|
||||||
|
}
|
||||||
@@ -0,0 +1,137 @@
|
|||||||
|
package com.njcn.csharmonic.mapper.report;
|
||||||
|
|
||||||
|
import com.njcn.harmonic.pojo.param.ReportQueryParam;
|
||||||
|
import com.njcn.harmonic.pojo.vo.ReportValue;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 谐波报告查询
|
||||||
|
*/
|
||||||
|
public interface ReportMapper {
|
||||||
|
/**
|
||||||
|
* 获取电流有效值
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<ReportValue> getVirtualDataI(@Param("param") ReportQueryParam param);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取电压有效值
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<ReportValue> getVirtualDataV(@Param("param") ReportQueryParam param);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CP95条数
|
||||||
|
* @param param
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
Integer getTotalCP95Day(@Param("param")ReportQueryParam param);
|
||||||
|
/**
|
||||||
|
* CP95条数
|
||||||
|
* @param param
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
Integer getTotalPltCP95Day(@Param("param")ReportQueryParam param);
|
||||||
|
/**
|
||||||
|
* CP95条数
|
||||||
|
* @param param
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
Integer getTotalPstCP95Day(@Param("param")ReportQueryParam param);
|
||||||
|
|
||||||
|
|
||||||
|
List<ReportValue> getVVirtualData(@Param("param")ReportQueryParam param);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取有功功率
|
||||||
|
* @param param
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<ReportValue> getPowerP(@Param("param")ReportQueryParam param);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 无功功率
|
||||||
|
* @param param
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<ReportValue> getPowerQ(@Param("param")ReportQueryParam param);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 视在功率
|
||||||
|
* @param param
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<ReportValue> getPowerS(@Param("param")ReportQueryParam param);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 功率因数
|
||||||
|
* @param param
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<ReportValue> getPF(@Param("param")ReportQueryParam param);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 短时闪变
|
||||||
|
* @param param
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<ReportValue> getFlickerData(@Param("param")ReportQueryParam param);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 长时闪变
|
||||||
|
* @param param
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<ReportValue> getLFlickerData(@Param("param")ReportQueryParam param);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 电压负偏差
|
||||||
|
* @param param
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<ReportValue> getUVdeviationData(@Param("param")ReportQueryParam param);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 电压正偏差
|
||||||
|
* @param param
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<ReportValue> getLVdeviationData(@Param("param")ReportQueryParam param);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取电压畸变率
|
||||||
|
* @param param
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<ReportValue> getDistortionDataV(@Param("param")ReportQueryParam param);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取电流畸变率
|
||||||
|
* @param param
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<ReportValue> getDistortionDataI(@Param("param")ReportQueryParam param);
|
||||||
|
|
||||||
|
/**
|
||||||
|
*频率
|
||||||
|
* @param param
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<ReportValue> getFrequencyData(@Param("param")ReportQueryParam param);
|
||||||
|
|
||||||
|
/**
|
||||||
|
*频率
|
||||||
|
* @param param
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<ReportValue> getDEVFrequencyData(@Param("param")ReportQueryParam param);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 负序电流
|
||||||
|
* @param param
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<ReportValue> getINegData(@Param("param")ReportQueryParam param);
|
||||||
|
}
|
||||||
@@ -0,0 +1,97 @@
|
|||||||
|
package com.njcn.csharmonic.service;
|
||||||
|
|
||||||
|
import com.njcn.harmonic.pojo.param.ReportQueryParam;
|
||||||
|
import com.njcn.harmonic.pojo.po.report.OverLimitInfo;
|
||||||
|
import com.njcn.harmonic.pojo.vo.ReportValue;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 谐波报告
|
||||||
|
*/
|
||||||
|
public interface ReportService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 限值
|
||||||
|
* @param param
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
OverLimitInfo getOverLimitData(ReportQueryParam param);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 基波增幅
|
||||||
|
* @param param
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<ReportValue> getVirtualData(ReportQueryParam param);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 功率
|
||||||
|
* @param param
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<ReportValue> getPowerData(ReportQueryParam param);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 闪变
|
||||||
|
* @param param
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<ReportValue> getFlickerData(ReportQueryParam param);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 电压偏差
|
||||||
|
* @param param
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<ReportValue> getVdeviation(ReportQueryParam param);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 畸变率
|
||||||
|
* @param param
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<ReportValue> getDistortionData(ReportQueryParam param);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 频率
|
||||||
|
* @param param
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<ReportValue> getFrequencyData(ReportQueryParam param);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 三相不平衡
|
||||||
|
* @param param
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<ReportValue> getThreephase(ReportQueryParam param);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 谐波电流
|
||||||
|
* @param param
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<ReportValue> getICurrent(ReportQueryParam param);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 谐波电压
|
||||||
|
* @param param
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<ReportValue> getVoltageRate(ReportQueryParam param);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 间谐波
|
||||||
|
* @param param
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<ReportValue> getInharmVeRate(ReportQueryParam param);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 负序电流
|
||||||
|
* @param param
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<ReportValue> getINegDataRate(ReportQueryParam param);
|
||||||
|
}
|
||||||
@@ -0,0 +1,595 @@
|
|||||||
|
package com.njcn.csharmonic.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import com.baomidou.dynamic.datasource.annotation.DS;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.njcn.csharmonic.mapper.report.RStatDataIDMapper;
|
||||||
|
import com.njcn.csharmonic.mapper.report.RStatDataInharmVDMapper;
|
||||||
|
import com.njcn.csharmonic.mapper.report.RStatDataVDMapper;
|
||||||
|
import com.njcn.csharmonic.mapper.report.ReportMapper;
|
||||||
|
import com.njcn.csharmonic.service.ReportService;
|
||||||
|
import com.njcn.csharmonic.util.RegroupData;
|
||||||
|
import com.njcn.harmonic.pojo.param.ReportQueryParam;
|
||||||
|
import com.njcn.harmonic.pojo.po.RStatDataVD;
|
||||||
|
import com.njcn.harmonic.pojo.po.day.RStatDataIDPO;
|
||||||
|
import com.njcn.harmonic.pojo.po.day.RStatDataInharmVDPO;
|
||||||
|
import com.njcn.harmonic.pojo.po.report.OverLimitInfo;
|
||||||
|
import com.njcn.harmonic.pojo.vo.ReportValue;
|
||||||
|
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.lang.reflect.Field;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author wr
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
@DS("sjzx")
|
||||||
|
public class ReportServiceImpl implements ReportService {
|
||||||
|
|
||||||
|
private final ReportMapper reportMapper;
|
||||||
|
private final RStatDataVDMapper rStatDataVDMapper;
|
||||||
|
private final RStatDataIDMapper rStatDataIDMapper;
|
||||||
|
private final RStatDataInharmVDMapper rStatDataInharmVDMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public OverLimitInfo getOverLimitData(ReportQueryParam param) {
|
||||||
|
|
||||||
|
|
||||||
|
OverLimitInfo overLimitInfo = new OverLimitInfo();
|
||||||
|
|
||||||
|
//查询时间段内共有多少条记录,并*0.95取整处理,用来计算CP95值 降序*0.05进一位计算
|
||||||
|
double count = 0;
|
||||||
|
double pstCount = 0;
|
||||||
|
double pltCount = 0;
|
||||||
|
if (param.getB()) {
|
||||||
|
count = Math.ceil(1);
|
||||||
|
pltCount = Math.ceil(1);
|
||||||
|
pstCount = Math.ceil(1);
|
||||||
|
} else {
|
||||||
|
count = Math.ceil(reportMapper.getTotalCP95Day(param).intValue() * 0.05);
|
||||||
|
pltCount = Math.ceil(reportMapper.getTotalPltCP95Day(param).intValue() * 0.05);
|
||||||
|
pstCount = Math.ceil(reportMapper.getTotalPstCP95Day(param).intValue() * 0.05);
|
||||||
|
}
|
||||||
|
overLimitInfo.setCount(count);
|
||||||
|
overLimitInfo.setPltCount(pltCount);
|
||||||
|
overLimitInfo.setPstCount(pstCount);
|
||||||
|
return overLimitInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<ReportValue> getVirtualData(ReportQueryParam param) {
|
||||||
|
List<ReportValue> list = new ArrayList<>();
|
||||||
|
|
||||||
|
// 获取电流有效值
|
||||||
|
List<ReportValue> listI = reportMapper.getVirtualDataI(param);
|
||||||
|
//获取电压有效值
|
||||||
|
List<ReportValue> listV = reportMapper.getVirtualDataV(param);
|
||||||
|
//获取线电压有效值
|
||||||
|
List<ReportValue> listVV = reportMapper.getVVirtualData(param);
|
||||||
|
|
||||||
|
RegroupData.regroupData(listV, true);
|
||||||
|
RegroupData.regroupData(listI, true);
|
||||||
|
RegroupData.regroupData(listVV, true);
|
||||||
|
list.addAll(listV);
|
||||||
|
list.addAll(listI);
|
||||||
|
list.addAll(listVV);
|
||||||
|
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<ReportValue> getPowerData(ReportQueryParam param) {
|
||||||
|
List<ReportValue> list = new ArrayList<>();
|
||||||
|
//获取有功功率
|
||||||
|
List<ReportValue> listP = reportMapper.getPowerP(param);
|
||||||
|
//获取无功功率
|
||||||
|
List<ReportValue> listQ = reportMapper.getPowerQ(param);
|
||||||
|
//获取视在功率
|
||||||
|
List<ReportValue> listS = reportMapper.getPowerS(param);
|
||||||
|
//获取功率因数
|
||||||
|
List<ReportValue> listF = reportMapper.getPF(param);
|
||||||
|
|
||||||
|
RegroupData.regroupData(listP, true, false);
|
||||||
|
RegroupData.regroupData(listQ, true, false);
|
||||||
|
RegroupData.regroupData(listS, true, false);
|
||||||
|
RegroupData.regroupData(listF, true, false);
|
||||||
|
list.addAll(listP);
|
||||||
|
list.addAll(listQ);
|
||||||
|
list.addAll(listS);
|
||||||
|
list.addAll(listF);
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<ReportValue> getFlickerData(ReportQueryParam param) {
|
||||||
|
List<ReportValue> list = new ArrayList<>();
|
||||||
|
|
||||||
|
//短时闪变
|
||||||
|
List<ReportValue> listFlicker = reportMapper.getFlickerData(param);
|
||||||
|
//长时闪变
|
||||||
|
List<ReportValue> listLFlicker = reportMapper.getLFlickerData(param);
|
||||||
|
|
||||||
|
RegroupData.regroupData(listFlicker, true);
|
||||||
|
RegroupData.regroupData(listLFlicker, true);
|
||||||
|
list.addAll(listFlicker);
|
||||||
|
list.addAll(listLFlicker);
|
||||||
|
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<ReportValue> getVdeviation(ReportQueryParam param) {
|
||||||
|
List<ReportValue> list = new ArrayList<>();
|
||||||
|
|
||||||
|
//获取电压偏差
|
||||||
|
List<ReportValue> listU = reportMapper.getUVdeviationData(param);
|
||||||
|
List<ReportValue> listL = reportMapper.getLVdeviationData(param);
|
||||||
|
|
||||||
|
RegroupData.regroupData(listU, true);
|
||||||
|
RegroupData.regroupData(listL, true);
|
||||||
|
list.addAll(listU);
|
||||||
|
list.addAll(listL);
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<ReportValue> getDistortionData(ReportQueryParam param) {
|
||||||
|
List<ReportValue> list = new ArrayList<>();
|
||||||
|
//获取电压畸变率
|
||||||
|
List<ReportValue> listU = reportMapper.getDistortionDataV(param);
|
||||||
|
//获取电流畸变率
|
||||||
|
List<ReportValue> listI = reportMapper.getDistortionDataI(param);
|
||||||
|
|
||||||
|
//添加之前判断数据库是否有数据,如果没有数据模拟数据添加到集合中
|
||||||
|
RegroupData.regroupData(listU, true);
|
||||||
|
RegroupData.regroupData(listI, true);
|
||||||
|
list.addAll(listU);
|
||||||
|
list.addAll(listI);
|
||||||
|
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<ReportValue> getFrequencyData(ReportQueryParam param) {
|
||||||
|
List<ReportValue> list = new ArrayList<>();
|
||||||
|
|
||||||
|
List<ReportValue> listFre = reportMapper.getFrequencyData(param);
|
||||||
|
List<ReportValue> listFreDEV = reportMapper.getDEVFrequencyData(param);
|
||||||
|
|
||||||
|
|
||||||
|
RegroupData.regroupData(listFre, true);
|
||||||
|
RegroupData.regroupData(listFreDEV, true);
|
||||||
|
list.addAll(listFre);
|
||||||
|
list.addAll(listFreDEV);
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<ReportValue> getThreephase(ReportQueryParam param) {
|
||||||
|
List<ReportValue> list = new ArrayList<>();
|
||||||
|
//电压三相不平衡度
|
||||||
|
List<ReportValue> listV = dataV(param, Arrays.asList("T"), 1, 5, true, 0);
|
||||||
|
//电流三相不平衡度
|
||||||
|
List<ReportValue> listI = dataI(param, Arrays.asList("T"), 1, 5, true, 0);
|
||||||
|
|
||||||
|
if (CollUtil.isNotEmpty(listV)) {
|
||||||
|
list.addAll(listV);
|
||||||
|
} else {
|
||||||
|
regroupData(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (CollUtil.isNotEmpty(listI)) {
|
||||||
|
list.addAll(listI);
|
||||||
|
} else {
|
||||||
|
regroupData(list);
|
||||||
|
}
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<ReportValue> getICurrent(ReportQueryParam param) {
|
||||||
|
List<ReportValue> list = new ArrayList<>();
|
||||||
|
|
||||||
|
//获取电流幅值,包含基波
|
||||||
|
List<ReportValue> listI = dataI(param, Arrays.asList("A", "B", "C"), 1, 51, false, 0);
|
||||||
|
if (CollUtil.isEmpty(listI)) {
|
||||||
|
for (int i = 0; i < 50; i++) {
|
||||||
|
RegroupData.regroupData(list, true, true);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
list.addAll(listI);
|
||||||
|
}
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<ReportValue> getVoltageRate(ReportQueryParam param) {
|
||||||
|
List<ReportValue> list = new ArrayList<>();
|
||||||
|
|
||||||
|
//获取基波电压幅值,单位kV
|
||||||
|
List<ReportValue> listV = dataV(param, Arrays.asList("A", "B", "C"), 0, 1, true, 5);
|
||||||
|
|
||||||
|
if (CollUtil.isEmpty(listV)) {
|
||||||
|
RegroupData.regroupData(list, true, true);
|
||||||
|
} else {
|
||||||
|
list.addAll(listV);
|
||||||
|
}
|
||||||
|
|
||||||
|
//获取电压含有率,不包含基波
|
||||||
|
List<ReportValue> listRate = dataV(param, Arrays.asList("A", "B", "C"), 2, 51, false, 1);
|
||||||
|
|
||||||
|
if (CollUtil.isEmpty(listRate)) {
|
||||||
|
for (int i = 0; i < 49; i++) {
|
||||||
|
RegroupData.regroupData(list, true, true);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
list.addAll(listRate);
|
||||||
|
}
|
||||||
|
|
||||||
|
//获取电压畸变率
|
||||||
|
List<ReportValue> listU = reportMapper.getDistortionDataV(param);
|
||||||
|
RegroupData.regroupData(listU, true);
|
||||||
|
list.addAll(listU);
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<ReportValue> getInharmVeRate(ReportQueryParam param) {
|
||||||
|
List<RStatDataInharmVDPO> inharm = rStatDataInharmVDMapper.selectList(new LambdaQueryWrapper<RStatDataInharmVDPO>()
|
||||||
|
.eq(RStatDataInharmVDPO::getLineId, param.getLineId())
|
||||||
|
.in(RStatDataInharmVDPO::getPhaseType, Arrays.asList("A", "B", "C"))
|
||||||
|
.ge(StrUtil.isNotBlank(param.getStartTime()), RStatDataInharmVDPO::getTime, DateUtil.beginOfDay(DateUtil.parse(param.getStartTime())))
|
||||||
|
.le(StrUtil.isNotBlank(param.getEndTime()), RStatDataInharmVDPO::getTime, DateUtil.endOfDay(DateUtil.parse(param.getEndTime())))
|
||||||
|
);
|
||||||
|
String max = "MAX";
|
||||||
|
String avg = "AVG";
|
||||||
|
String min = "MIN";
|
||||||
|
String cp95 = "CP95";
|
||||||
|
List<ReportValue> a = new ArrayList<>();
|
||||||
|
Map<String, List<RStatDataInharmVDPO>> collect = inharm.stream().collect(Collectors.groupingBy(RStatDataInharmVDPO::getPhaseType));
|
||||||
|
collect.forEach((key, value) -> {
|
||||||
|
Map<String, List<RStatDataInharmVDPO>> valueTypeMap = value.stream().collect(Collectors.groupingBy(RStatDataInharmVDPO::getValueType));
|
||||||
|
|
||||||
|
for (int i = 1; i < 17; i++) {
|
||||||
|
ReportValue reportValue = new ReportValue();
|
||||||
|
String attribute = "v" + i;
|
||||||
|
|
||||||
|
if (valueTypeMap.containsKey(max)) {
|
||||||
|
List<Float> aa = reflectDataInV(valueTypeMap.get(max), max, attribute);
|
||||||
|
reportValue.setPhaseType(key);
|
||||||
|
Float maxNum = aa.stream().distinct().max(Float::compareTo).get();
|
||||||
|
reportValue.setFmaxValue(maxNum);
|
||||||
|
}
|
||||||
|
if (valueTypeMap.containsKey(avg)) {
|
||||||
|
List<Float> aa = reflectDataInV(valueTypeMap.get(avg), avg, attribute);
|
||||||
|
reportValue.setPhaseType(key);
|
||||||
|
Double avgNum = aa.stream().distinct().collect(Collectors.averagingDouble(Float::doubleValue));
|
||||||
|
reportValue.setMeanValue(avgNum.floatValue());
|
||||||
|
}
|
||||||
|
if (valueTypeMap.containsKey(min)) {
|
||||||
|
List<Float> aa = reflectDataInV(valueTypeMap.get(min), min, attribute);
|
||||||
|
reportValue.setPhaseType(key);
|
||||||
|
double minNum = aa.stream().distinct().min(Float::compareTo).get();
|
||||||
|
reportValue.setMinValue((float) minNum);
|
||||||
|
}
|
||||||
|
if (valueTypeMap.containsKey(cp95)) {
|
||||||
|
List<Float> aa = reflectDataInV(valueTypeMap.get(cp95), cp95, attribute);
|
||||||
|
reportValue.setPhaseType(key);
|
||||||
|
List<Float> cp95Num = aa.stream().distinct().sorted(Comparator.comparing(Float::doubleValue).reversed()).collect(Collectors.toList());
|
||||||
|
reportValue.setCp95Value(cp95Num.get(0).floatValue());
|
||||||
|
}
|
||||||
|
a.add(reportValue);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (CollUtil.isEmpty(a)) {
|
||||||
|
for (int i = 1; i < 17; i++) {
|
||||||
|
RegroupData.regroupData(a, true, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<ReportValue> getINegDataRate(ReportQueryParam param) {
|
||||||
|
List<ReportValue> list = new ArrayList<>();
|
||||||
|
//负序电流
|
||||||
|
List<ReportValue> iNegData = reportMapper.getINegData(param);
|
||||||
|
RegroupData.regroupData(iNegData, true);
|
||||||
|
list.addAll(iNegData);
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
//赋值默认值
|
||||||
|
private void regroupData(List<ReportValue> list) {
|
||||||
|
for (int i = 0; i < 4; i++) {
|
||||||
|
List<ReportValue> list1 = new ArrayList<>();
|
||||||
|
RegroupData.regroupData(list1, false);
|
||||||
|
list.addAll(list1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 电压信息
|
||||||
|
*
|
||||||
|
* @param param 查询条件
|
||||||
|
* @param valueTypes 区分类别 例如"A","B","C"
|
||||||
|
* @param num 循环开始
|
||||||
|
* @param size 循环结束
|
||||||
|
* @param fly 否是启用获取属性电压
|
||||||
|
* @param index 获取属性位置名称
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private List<ReportValue> dataV(ReportQueryParam param, List<String> valueTypes, Integer num, Integer size, Boolean fly, Integer index) {
|
||||||
|
List<RStatDataVD> rStatDataVDS = rStatDataVDMapper.selectList(new LambdaQueryWrapper<RStatDataVD>()
|
||||||
|
.eq(RStatDataVD::getLineId, param.getLineId())
|
||||||
|
.in(CollUtil.isNotEmpty(valueTypes), RStatDataVD::getPhasicType, valueTypes)
|
||||||
|
.ge(StrUtil.isNotBlank(param.getStartTime()), RStatDataVD::getTime, DateUtil.beginOfDay(DateUtil.parse(param.getStartTime())))
|
||||||
|
.le(StrUtil.isNotBlank(param.getEndTime()), RStatDataVD::getTime, DateUtil.endOfDay(DateUtil.parse(param.getEndTime())))
|
||||||
|
);
|
||||||
|
String max = "MAX";
|
||||||
|
String avg = "AVG";
|
||||||
|
String min = "MIN";
|
||||||
|
String cp95 = "CP95";
|
||||||
|
List<ReportValue> a = new ArrayList<>();
|
||||||
|
Map<String, List<RStatDataVD>> collect = rStatDataVDS.stream().collect(Collectors.groupingBy(RStatDataVD::getPhasicType));
|
||||||
|
collect.forEach((key, value) -> {
|
||||||
|
Map<String, List<RStatDataVD>> valueTypeMap = value.stream().collect(Collectors.groupingBy(RStatDataVD::getValueType));
|
||||||
|
|
||||||
|
for (int i = num; i < size; i++) {
|
||||||
|
ReportValue reportValue = new ReportValue();
|
||||||
|
String attribute = "";
|
||||||
|
if (fly) {
|
||||||
|
if (index == 0) {
|
||||||
|
attribute = attributeV(i);
|
||||||
|
} else {
|
||||||
|
attribute = attributeV(index);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
attribute = "v" + i;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (valueTypeMap.containsKey(max)) {
|
||||||
|
List<Float> aa = reflectDataV(valueTypeMap.get(max), max, attribute);
|
||||||
|
reportValue.setPhaseType(key);
|
||||||
|
Float maxNum = aa.stream().distinct().max(Float::compareTo).get();
|
||||||
|
reportValue.setFmaxValue(maxNum);
|
||||||
|
}
|
||||||
|
if (valueTypeMap.containsKey(avg)) {
|
||||||
|
List<Float> aa = reflectDataV(valueTypeMap.get(avg), avg, attribute);
|
||||||
|
reportValue.setPhaseType(key);
|
||||||
|
Double avgNum = aa.stream().distinct().collect(Collectors.averagingDouble(Float::doubleValue));
|
||||||
|
reportValue.setMeanValue(avgNum.floatValue());
|
||||||
|
}
|
||||||
|
if (valueTypeMap.containsKey(min)) {
|
||||||
|
List<Float> aa = reflectDataV(valueTypeMap.get(min), min, attribute);
|
||||||
|
reportValue.setPhaseType(key);
|
||||||
|
double minNum = aa.stream().distinct().min(Float::compareTo).get();
|
||||||
|
reportValue.setMinValue((float) minNum);
|
||||||
|
}
|
||||||
|
if (valueTypeMap.containsKey(cp95)) {
|
||||||
|
List<Float> aa = reflectDataV(valueTypeMap.get(cp95), cp95, attribute);
|
||||||
|
reportValue.setPhaseType(key);
|
||||||
|
List<Float> cp95Num = aa.stream().distinct().sorted(Comparator.comparing(Float::doubleValue).reversed()).collect(Collectors.toList());
|
||||||
|
reportValue.setCp95Value(cp95Num.get(0).floatValue());
|
||||||
|
}
|
||||||
|
a.add(reportValue);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 电压反射取属性值
|
||||||
|
*
|
||||||
|
* @param value
|
||||||
|
* @param name
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private List<Float> reflectDataV(List<RStatDataVD> value, String name, String attribute) {
|
||||||
|
Field field = null;
|
||||||
|
try {
|
||||||
|
field = RStatDataVD.class.getDeclaredField(attribute);
|
||||||
|
} catch (NoSuchFieldException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
field.setAccessible(true);
|
||||||
|
|
||||||
|
Field finalField = field;
|
||||||
|
return value.stream().filter(x -> x.getValueType().equals(name)).map(temp -> {
|
||||||
|
BigDecimal o = null;
|
||||||
|
try {
|
||||||
|
o = (BigDecimal) finalField.get(temp);
|
||||||
|
} catch (IllegalAccessException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
return o.floatValue();
|
||||||
|
}).collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 电压反射取属性值
|
||||||
|
*
|
||||||
|
* @param value
|
||||||
|
* @param name
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private List<Float> reflectDataInV(List<RStatDataInharmVDPO> value, String name, String attribute) {
|
||||||
|
Field field;
|
||||||
|
try {
|
||||||
|
field = RStatDataInharmVDPO.class.getDeclaredField(attribute);
|
||||||
|
} catch (NoSuchFieldException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
field.setAccessible(true);
|
||||||
|
|
||||||
|
Field finalField = field;
|
||||||
|
return value.stream().filter(x -> x.getValueType().equals(name)).map(temp -> {
|
||||||
|
Double o;
|
||||||
|
try {
|
||||||
|
o = (Double) finalField.get(temp);
|
||||||
|
} catch (IllegalAccessException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
return o.floatValue();
|
||||||
|
}).collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 电流信息
|
||||||
|
*
|
||||||
|
* @param param
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private List<ReportValue> dataI(ReportQueryParam param, List<String> valueTypes, Integer num, Integer size, Boolean fly, Integer index) {
|
||||||
|
List<RStatDataIDPO> rStatDataVDS = rStatDataIDMapper.selectList(new LambdaQueryWrapper<RStatDataIDPO>()
|
||||||
|
.eq(RStatDataIDPO::getLineId, param.getLineId())
|
||||||
|
.in(CollUtil.isNotEmpty(valueTypes), RStatDataIDPO::getPhaseType, valueTypes)
|
||||||
|
.ge(StrUtil.isNotBlank(param.getStartTime()), RStatDataIDPO::getTime, DateUtil.beginOfDay(DateUtil.parse(param.getStartTime())))
|
||||||
|
.le(StrUtil.isNotBlank(param.getEndTime()), RStatDataIDPO::getTime, DateUtil.endOfDay(DateUtil.parse(param.getEndTime())))
|
||||||
|
);
|
||||||
|
String max = "MAX";
|
||||||
|
String avg = "AVG";
|
||||||
|
String min = "MIN";
|
||||||
|
String cp95 = "CP95";
|
||||||
|
List<ReportValue> a = new ArrayList<>();
|
||||||
|
Map<String, List<RStatDataIDPO>> collect = rStatDataVDS.stream().collect(Collectors.groupingBy(RStatDataIDPO::getPhaseType));
|
||||||
|
collect.forEach((key, value) -> {
|
||||||
|
Map<String, List<RStatDataIDPO>> valueTypeMap = value.stream().collect(Collectors.groupingBy(RStatDataIDPO::getValueType));
|
||||||
|
|
||||||
|
for (int i = num; i < size; i++) {
|
||||||
|
ReportValue reportValue = new ReportValue();
|
||||||
|
String attribute = "";
|
||||||
|
if (fly) {
|
||||||
|
if (index == 0) {
|
||||||
|
attribute = attributeI(i);
|
||||||
|
} else {
|
||||||
|
attribute = attributeI(index);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
attribute = "i" + i;
|
||||||
|
}
|
||||||
|
if (valueTypeMap.containsKey(max)) {
|
||||||
|
List<Float> aa = reflectDataI(valueTypeMap.get(max), max, attribute);
|
||||||
|
reportValue.setPhaseType(key);
|
||||||
|
Float maxNum = aa.stream().distinct().max(Float::compareTo).get();
|
||||||
|
reportValue.setFmaxValue(maxNum);
|
||||||
|
}
|
||||||
|
if (valueTypeMap.containsKey(avg)) {
|
||||||
|
List<Float> aa = reflectDataI(valueTypeMap.get(avg), avg, attribute);
|
||||||
|
reportValue.setPhaseType(key);
|
||||||
|
Double avgNum = aa.stream().distinct().collect(Collectors.averagingDouble(Float::doubleValue));
|
||||||
|
reportValue.setMeanValue(avgNum.floatValue());
|
||||||
|
}
|
||||||
|
if (valueTypeMap.containsKey(min)) {
|
||||||
|
List<Float> aa = reflectDataI(valueTypeMap.get(min), min, attribute);
|
||||||
|
reportValue.setPhaseType(key);
|
||||||
|
double minNum = aa.stream().distinct().min(Float::compareTo).get();
|
||||||
|
reportValue.setMinValue((float) minNum);
|
||||||
|
}
|
||||||
|
if (valueTypeMap.containsKey(cp95)) {
|
||||||
|
List<Float> aa = reflectDataI(valueTypeMap.get(cp95), cp95, attribute);
|
||||||
|
reportValue.setPhaseType(key);
|
||||||
|
List<Float> cp95Num = aa.stream().distinct().sorted(Comparator.comparing(Float::doubleValue).reversed()).collect(Collectors.toList());
|
||||||
|
reportValue.setCp95Value(cp95Num.get(0).floatValue());
|
||||||
|
}
|
||||||
|
a.add(reportValue);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 电流反射取属性值
|
||||||
|
*
|
||||||
|
* @param value
|
||||||
|
* @param name
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private List<Float> reflectDataI(List<RStatDataIDPO> value, String name, String attribute) {
|
||||||
|
Field field = null;
|
||||||
|
try {
|
||||||
|
field = RStatDataIDPO.class.getDeclaredField(attribute);
|
||||||
|
} catch (NoSuchFieldException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
field.setAccessible(true);
|
||||||
|
Field finalField = field;
|
||||||
|
return value.stream().filter(x -> x.getValueType().equals(name)).map(temp -> {
|
||||||
|
Double o = null;
|
||||||
|
try {
|
||||||
|
o = (Double) finalField.get(temp);
|
||||||
|
} catch (IllegalAccessException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
return o.floatValue();
|
||||||
|
}).collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取属性电压
|
||||||
|
*
|
||||||
|
* @param i
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private String attributeV(Integer i) {
|
||||||
|
String str = null;
|
||||||
|
switch (i) {
|
||||||
|
case 1:
|
||||||
|
str = "vUnbalance";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
str = "vPos";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
str = "vNeg";
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
str = "vZero";
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
str = "v1";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取属性电流
|
||||||
|
*
|
||||||
|
* @param i
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private String attributeI(Integer i) {
|
||||||
|
String str = null;
|
||||||
|
switch (i) {
|
||||||
|
case 1:
|
||||||
|
str = "iUnbalance";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
str = "iPos";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
str = "iNeg";
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
str = "iZero";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
package com.njcn.csharmonic.util;
|
||||||
|
|
||||||
|
import com.njcn.harmonic.pojo.vo.ReportValue;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class RegroupData {
|
||||||
|
public static void regroupData(List<ReportValue> list, boolean... b) {
|
||||||
|
if (1 == b.length || (2 == b.length && b[1] == false)) {
|
||||||
|
if (0 < list.size()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Float value = null;
|
||||||
|
int length = b[0] ? 3 : 1;
|
||||||
|
|
||||||
|
length = (b.length == 2 && !b[1]) ? 4 : length;
|
||||||
|
|
||||||
|
for (int i = 0; i < length; i++) {
|
||||||
|
String str = null;
|
||||||
|
|
||||||
|
if (b[0]) {
|
||||||
|
switch (i) {
|
||||||
|
case 0:
|
||||||
|
str = "A";
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
str = "B";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
str = "C";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
str = "T";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ReportValue reportValue = new ReportValue(str, value, value, value, value);
|
||||||
|
list.add(reportValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
cs-harmonic/cs-harmonic-boot/src/main/resources/file/default.jpg
Normal file
BIN
cs-harmonic/cs-harmonic-boot/src/main/resources/file/default.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 76 KiB |
BIN
cs-harmonic/cs-harmonic-boot/src/main/resources/file/jxt.jpg
Normal file
BIN
cs-harmonic/cs-harmonic-boot/src/main/resources/file/jxt.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 8.1 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user