代码调整
This commit is contained in:
@@ -4,8 +4,10 @@ import com.njcn.common.pojo.constant.ServerInfo;
|
||||
import com.njcn.common.pojo.response.HttpResult;
|
||||
import com.njcn.device.pms.api.fallback.PmsGeneratrixClientFallbackFactory;
|
||||
import com.njcn.device.pms.api.fallback.StatationStatClientFallbackFactory;
|
||||
import com.njcn.device.pms.pojo.dto.GeneratrixAndPowerStationDTO;
|
||||
import com.njcn.device.pms.pojo.dto.PmsGeneratrixDTO;
|
||||
import com.njcn.device.pms.pojo.param.PmsGeneratrixParam;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
@@ -30,4 +32,15 @@ public interface PmsGeneratrixClient {
|
||||
*/
|
||||
@PostMapping("/getGeneratrixInfo")
|
||||
HttpResult<List<PmsGeneratrixDTO>> getGeneratrixInfo(@RequestBody PmsGeneratrixParam pmsGeneratrixParam);
|
||||
|
||||
/**
|
||||
* 获取母线与电站关联信息
|
||||
*
|
||||
* @param param 条件参数
|
||||
* @return com.njcn.common.pojo.response.HttpResult<java.util.List < com.njcn.device.pms.pojo.dto.GeneratrixAndPowerStationDTO>>
|
||||
* @author yzh
|
||||
* @date 2022/11/3
|
||||
*/
|
||||
@PostMapping("/getGeneratrixAndPowerStationInfo")
|
||||
HttpResult<List<GeneratrixAndPowerStationDTO>> getGeneratrixAndPowerStationInfo(@RequestBody PmsGeneratrixParam param);
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import com.njcn.common.pojo.exception.BusinessException;
|
||||
import com.njcn.common.pojo.response.HttpResult;
|
||||
import com.njcn.device.pms.api.PmsGeneralDeviceInfoClient;
|
||||
import com.njcn.device.pms.api.PmsGeneratrixClient;
|
||||
import com.njcn.device.pms.pojo.dto.GeneratrixAndPowerStationDTO;
|
||||
import com.njcn.device.pms.pojo.dto.PmsGeneralDeviceDTO;
|
||||
import com.njcn.device.pms.pojo.dto.PmsGeneratrixDTO;
|
||||
import com.njcn.device.pms.pojo.param.PmsDeviceInfoParam;
|
||||
@@ -38,6 +39,11 @@ public class PmsGeneratrixClientFallbackFactory implements FallbackFactory<PmsGe
|
||||
log.error("{}异常,降级处理,异常为:{}", "获取母线信息", throwable.toString());
|
||||
throw new BusinessException(finalExceptionEnum);
|
||||
}
|
||||
@Override
|
||||
public HttpResult<List<GeneratrixAndPowerStationDTO>> getGeneratrixAndPowerStationInfo(PmsGeneratrixParam param) {
|
||||
log.error("{}异常,降级处理,异常为:{}", "获取母线与电站关联信息", throwable.toString());
|
||||
throw new BusinessException(finalExceptionEnum);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
package com.njcn.device.pms.pojo.dto;
|
||||
|
||||
import com.njcn.device.pms.pojo.po.Generatrix;
|
||||
import com.njcn.device.pq.pojo.po.Voltage;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import org.apache.commons.math3.analysis.function.Power;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 母线与电站关联信息
|
||||
*
|
||||
* @author yzh
|
||||
* @date 2022/11/3
|
||||
*/
|
||||
|
||||
@Data
|
||||
public class GeneratrixAndPowerStationDTO implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 母线id
|
||||
*/
|
||||
@ApiModelProperty(name = "generatrixId", value = "母线id")
|
||||
private String generatrixId;
|
||||
|
||||
/**
|
||||
* 母线名称
|
||||
*/
|
||||
@ApiModelProperty(name = "generatrixName", value = "母线名称")
|
||||
private String generatrixName;
|
||||
|
||||
/**
|
||||
* 母线电压等级
|
||||
*/
|
||||
@ApiModelProperty(name = "generatrixVoltageLevel", value = "母线电压等级")
|
||||
private String generatrixVoltageLevel;
|
||||
|
||||
/**
|
||||
* 变电站id
|
||||
*/
|
||||
@ApiModelProperty(name = "powerId", value = "变电站id")
|
||||
private String powerId;
|
||||
|
||||
/**
|
||||
* 变电站名称
|
||||
*/
|
||||
@ApiModelProperty(name = "powerName", value = "变电站名称")
|
||||
private String powerName;
|
||||
|
||||
/**
|
||||
* 变电站电压等级
|
||||
*/
|
||||
@ApiModelProperty(name = "powerVoltageLevel", value = "变电站电压等级")
|
||||
private String powerVoltageLevel;
|
||||
}
|
||||
@@ -23,15 +23,32 @@ public class PmsGeneratrixParam implements Serializable {
|
||||
* 母线id集合
|
||||
*/
|
||||
@ApiModelProperty(name = "generatrixIds", value = "母线id集合")
|
||||
@NotNull(message = "母线id集合不可为空")
|
||||
private List<String> generatrixIds;
|
||||
|
||||
/**
|
||||
* 变电站id
|
||||
*/
|
||||
@ApiModelProperty(name = "powerStationIds", value = "变电站id")
|
||||
private List<String> powerStationIds;
|
||||
|
||||
/**
|
||||
* 变电站名称
|
||||
*/
|
||||
@ApiModelProperty(name = "powerStationName", value = "变电站名称")
|
||||
private String powerStationName;
|
||||
|
||||
/**
|
||||
* 母线名称
|
||||
*/
|
||||
@ApiModelProperty(name = "generatrixName", value = "母线名称")
|
||||
private String generatrixName;
|
||||
|
||||
/**
|
||||
* 变电站电压等级
|
||||
*/
|
||||
@ApiModelProperty(name = "powerStationVoltageLevel", value = "变电站电压等级")
|
||||
private List<String> powerStationVoltageLevel;
|
||||
|
||||
/**
|
||||
* 母线电压等级
|
||||
*/
|
||||
|
||||
@@ -9,11 +9,11 @@ import java.io.Serializable;
|
||||
* (RStatBusbarHarmonicY)实体类
|
||||
*
|
||||
* @author yzh
|
||||
* @since 2022-10-12 18:38:16
|
||||
* @since 2022-11-03 14:16:47
|
||||
*/
|
||||
@Data
|
||||
public class RStatBusbarHarmonicPO implements Serializable {
|
||||
private static final long serialVersionUID = 398744755685851294L;
|
||||
public class RStatBusbarHarmonicYPO implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
/**
|
||||
* 母线ID
|
||||
*/
|
||||
@@ -87,6 +87,5 @@ public class RStatBusbarHarmonicPO implements Serializable {
|
||||
*/
|
||||
private Double flicker95;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 变电站母线电压指标年报返回前端实体类
|
||||
@@ -15,8 +16,8 @@ import java.io.Serializable;
|
||||
*/
|
||||
|
||||
@Data
|
||||
@ApiModel(value = "变电站母线电压指标年报返回前端实体类")
|
||||
public class RStatBusbarHarmonicVO implements Serializable {
|
||||
@ApiModel("变电站母线电压指标年报返回前端实体类")
|
||||
public class RStatBusbarHarmonicYVO implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 835979721790264805L;
|
||||
/**
|
||||
@@ -28,8 +29,8 @@ public class RStatBusbarHarmonicVO implements Serializable {
|
||||
/**
|
||||
* 所属单位
|
||||
*/
|
||||
@ApiModelProperty(name = "company", value = "单位")
|
||||
private String company;
|
||||
@ApiModelProperty(name = "deptName", value = "单位")
|
||||
private String deptName;
|
||||
|
||||
/**
|
||||
* 变电站id
|
||||
@@ -59,128 +60,108 @@ public class RStatBusbarHarmonicVO implements Serializable {
|
||||
* 母线id
|
||||
*/
|
||||
@ApiModelProperty(name = "busbarId", value = "母线id")
|
||||
@TableField(value = "busbar_id")
|
||||
private String busbarId;
|
||||
|
||||
|
||||
/**
|
||||
* 生成数据的时间,每年统计一次
|
||||
*/
|
||||
@ApiModelProperty(name = "dataDate", value = "生成数据的时间,每年统计一次")
|
||||
@TableField(value = "data_date")
|
||||
private String dataDate;
|
||||
private Date dataDate;
|
||||
|
||||
/**
|
||||
* 电压有效最大值
|
||||
*/
|
||||
@ApiModelProperty(name = "vEffectiveMax", value = "电压有效最大值")
|
||||
@TableField(value = "v_effective_max")
|
||||
private Double vEffectiveMax;
|
||||
|
||||
/**
|
||||
* 电压有效最小值
|
||||
*/
|
||||
@ApiModelProperty(name = "vEffectiveMin", value = "电压有效最小值")
|
||||
@TableField(value = "v_effective_min")
|
||||
private Double vEffectiveMin;
|
||||
|
||||
/**
|
||||
* 电压有效平均值
|
||||
*/
|
||||
@ApiModelProperty(name = "vEffectiveAvg", value = "电压有效平均值")
|
||||
@TableField(value = "v_effective_avg")
|
||||
private Double vEffectiveAvg;
|
||||
|
||||
/**
|
||||
* 电压有效值95概率大值
|
||||
*/
|
||||
@ApiModelProperty(name = "vEffective95", value = "电压有效值95概率大值")
|
||||
@TableField(value = "v_effective_95")
|
||||
private Double vEffective95;
|
||||
|
||||
/**
|
||||
* 电压总谐波畸变率最大值
|
||||
*/
|
||||
@ApiModelProperty(name = "vThdMax", value = "电压总谐波畸变率最大值")
|
||||
@TableField(value = "v_thd_max")
|
||||
private Double vThdMax;
|
||||
|
||||
/**
|
||||
* 电压总谐波畸变率最小值
|
||||
*/
|
||||
@ApiModelProperty(name = "vThdMin", value = "电压总谐波畸变率最小值")
|
||||
@TableField(value = "v_thd_min")
|
||||
private Double vThdMin;
|
||||
|
||||
/**
|
||||
* 电压总谐波畸变率平均值
|
||||
*/
|
||||
@ApiModelProperty(name = "vThdAvg", value = "电压总谐波畸变率平均值")
|
||||
@TableField(value = "v_thd_avg")
|
||||
private Double vThdAvg;
|
||||
|
||||
/**
|
||||
* 电压总谐波畸变率95概率大值
|
||||
*/
|
||||
@ApiModelProperty(name = "vThd95", value = "电压总谐波畸变率95概率大值")
|
||||
@TableField(value = "v_thd_95")
|
||||
private Double vThd95;
|
||||
|
||||
/**
|
||||
* 三相电压不平衡最大值
|
||||
*/
|
||||
@ApiModelProperty(name = "unbalanceMax", value = "三相电压不平衡最大值")
|
||||
@TableField(value = "unbalance_max")
|
||||
private Double unbalanceMax;
|
||||
|
||||
/**
|
||||
* 三相电压不平衡最小值
|
||||
*/
|
||||
@ApiModelProperty(name = "unbalanceMin", value = "三相电压不平衡最小值")
|
||||
@TableField(value = "unbalance_min")
|
||||
private Double unbalanceMin;
|
||||
|
||||
/**
|
||||
* 三相电压不平衡平均值
|
||||
*/
|
||||
@ApiModelProperty(name = "unbalanceAvg", value = "三相电压不平衡平均值")
|
||||
@TableField(value = "unbalance_avg")
|
||||
private Double unbalanceAvg;
|
||||
|
||||
/**
|
||||
* 三相电压不平衡95概率大值
|
||||
*/
|
||||
@ApiModelProperty(name = "unbalance95", value = "三相电压不平衡95概率大值")
|
||||
@TableField(value = "unbalance_95")
|
||||
private Double unbalance95;
|
||||
|
||||
/**
|
||||
* 闪变最大值
|
||||
*/
|
||||
@ApiModelProperty(name = "flickerMax", value = "闪变最大值")
|
||||
@TableField(value = "flicker_max")
|
||||
private Double flickerMax;
|
||||
|
||||
/**
|
||||
* 闪变最小值
|
||||
*/
|
||||
@ApiModelProperty(name = "flickerMin", value = "闪变最小值")
|
||||
@TableField(value = "flicker_min")
|
||||
private Double flickerMin;
|
||||
|
||||
/**
|
||||
* 闪变平均值
|
||||
*/
|
||||
@ApiModelProperty(name = "flickerAvg", value = "闪变平均值")
|
||||
@TableField(value = "flicker_avg")
|
||||
private Double flickerAvg;
|
||||
|
||||
/**
|
||||
* 闪变95概率大值
|
||||
*/
|
||||
@ApiModelProperty(name = "flicker95", value = "闪变95概率大值")
|
||||
@TableField(value = "flicker_95")
|
||||
private Double flicker95;
|
||||
|
||||
|
||||
}
|
||||
@@ -7,6 +7,7 @@ import com.njcn.common.pojo.enums.common.LogEnum;
|
||||
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
|
||||
import com.njcn.common.pojo.response.HttpResult;
|
||||
import com.njcn.common.utils.HttpResultUtil;
|
||||
import com.njcn.device.pms.pojo.dto.GeneratrixAndPowerStationDTO;
|
||||
import com.njcn.device.pms.pojo.dto.PmsGeneratrixDTO;
|
||||
import com.njcn.device.pms.pojo.param.GeneratrixParam;
|
||||
import com.njcn.device.pms.pojo.param.PmsGeneratrixParam;
|
||||
@@ -43,16 +44,38 @@ public class PmsGeneratrixController extends BaseController {
|
||||
/**
|
||||
* 获取指定母线信息
|
||||
*
|
||||
* @param pmsGeneratrixParam 获取指定的监测点信息条件
|
||||
* @param param 获取指定的监测点信息条件
|
||||
* @return 指定母线信息
|
||||
*/
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/getGeneratrixInfo")
|
||||
@ApiOperation("获取指定母线信息")
|
||||
@ApiImplicitParam(name = "pmsGeneratrixParam", value = "获取指定母线信息条件", required = true)
|
||||
public HttpResult<List<PmsGeneratrixDTO>> getGeneratrixInfo(@RequestBody @Validated PmsGeneratrixParam pmsGeneratrixParam) {
|
||||
@ApiImplicitParam(name = "param", value = "获取指定母线信息条件", required = true)
|
||||
public HttpResult<List<PmsGeneratrixDTO>> getGeneratrixInfo(@RequestBody @Validated PmsGeneratrixParam param) {
|
||||
String methodDescribe = getMethodDescribe("getGeneratrixInfo");
|
||||
List<PmsGeneratrixDTO> monitorInfo = pmsGeneratrixService.getGeneratrixInfo(pmsGeneratrixParam);
|
||||
List<PmsGeneratrixDTO> monitorInfo = pmsGeneratrixService.getGeneratrixInfo(param);
|
||||
if (CollectionUtil.isEmpty(monitorInfo)) {
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.NO_DATA, null, methodDescribe);
|
||||
} else {
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, monitorInfo, methodDescribe);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取母线与电站关联信息
|
||||
*
|
||||
* @param param 条件参数
|
||||
* @return com.njcn.common.pojo.response.HttpResult<java.util.List < com.njcn.device.pms.pojo.dto.PmsGeneratrixDTO>>
|
||||
* @author yzh
|
||||
* @date 2022/11/3
|
||||
*/
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/getGeneratrixAndPowerStationInfo")
|
||||
@ApiOperation("获取母线与电站关联信息")
|
||||
@ApiImplicitParam(name = "param", value = "条件参数", required = true)
|
||||
public HttpResult<List<GeneratrixAndPowerStationDTO>> getGeneratrixAndPowerStationInfo(@RequestBody @Validated PmsGeneratrixParam param) {
|
||||
String methodDescribe = getMethodDescribe("getGeneratrixAndPowerStationInfo");
|
||||
List<GeneratrixAndPowerStationDTO> monitorInfo = pmsGeneratrixService.getGeneratrixAndPowerStationInfo(param);
|
||||
if (CollectionUtil.isEmpty(monitorInfo)) {
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.NO_DATA, null, methodDescribe);
|
||||
} else {
|
||||
|
||||
@@ -7,7 +7,7 @@ import com.njcn.common.pojo.enums.response.CommonResponseEnum;
|
||||
import com.njcn.common.pojo.response.HttpResult;
|
||||
import com.njcn.common.utils.HttpResultUtil;
|
||||
import com.njcn.device.pms.pojo.param.UniversalFrontEndParam;
|
||||
import com.njcn.device.pms.pojo.vo.RStatBusbarHarmonicVO;
|
||||
import com.njcn.device.pms.pojo.vo.RStatBusbarHarmonicYVO;
|
||||
import com.njcn.device.pms.service.RStatBusbarHarmonicService;
|
||||
import com.njcn.web.controller.BaseController;
|
||||
import io.swagger.annotations.Api;
|
||||
@@ -45,10 +45,10 @@ public class RStatBusbarHarmonicController extends BaseController {
|
||||
@PostMapping("/getRStatBusbarHarmonic")
|
||||
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
|
||||
@ApiOperation("获取变电站母线电压指标年报")
|
||||
@ApiImplicitParam(name = "param", value = "获取变电站母线电压指标年报前端参数", required = true)
|
||||
public HttpResult<List<RStatBusbarHarmonicVO>> getRStatBusbarHarmonic(@RequestBody UniversalFrontEndParam param) {
|
||||
@ApiImplicitParam(name = "param", value = "条件参数", required = true)
|
||||
public HttpResult<List<RStatBusbarHarmonicYVO>> getRStatBusbarHarmonic(@RequestBody UniversalFrontEndParam param) {
|
||||
String methodDescribe = getMethodDescribe("getRStatBusbarHarmonic");
|
||||
List<RStatBusbarHarmonicVO> list = statBusbarHarmonicService.getRStatBusbarHarmonic(param);
|
||||
List<RStatBusbarHarmonicYVO> list = statBusbarHarmonicService.getRStatBusbarHarmonic(param);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
|
||||
}
|
||||
|
||||
|
||||
@@ -98,7 +98,7 @@ public class TerminalController extends BaseController {
|
||||
@PostMapping("/updateTerminal")
|
||||
@OperateInfo(info = LogEnum.SYSTEM_COMMON,operateType = OperateType.UPDATE)
|
||||
@ApiOperation("修改监测终端台账信息")
|
||||
@ApiImplicitParam(name = "UpdateParam", value = "更新实体", required = true)
|
||||
@ApiImplicitParam(name = "updateParam", value = "更新实体", required = true)
|
||||
public HttpResult<Object> update(@RequestBody @Validated PmsTerminalParam updateParam){
|
||||
String methodDescribe = getMethodDescribe("update");
|
||||
boolean result = iTerminalService.update(updateParam);
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.njcn.device.pms.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.njcn.device.pms.pojo.dto.GeneratrixAndPowerStationDTO;
|
||||
import com.njcn.device.pms.pojo.dto.PmsGeneratrixDTO;
|
||||
import com.njcn.device.pms.pojo.param.PmsGeneratrixParam;
|
||||
import com.njcn.device.pms.pojo.po.Generatrix;
|
||||
@@ -23,4 +24,14 @@ public interface PmsGeneratrixMapper extends BaseMapper<Generatrix> {
|
||||
* @return 母线信息
|
||||
*/
|
||||
List<PmsGeneratrixDTO> getGeneratrixInfo(@Param("pmsGeneratrixParam") PmsGeneratrixParam pmsGeneratrixParam);
|
||||
|
||||
/**
|
||||
* 获取母线与电站关联信息
|
||||
*
|
||||
* @param param 条件参数
|
||||
* @return java.util.List<com.njcn.device.pms.pojo.dto.GeneratrixAndPowerStationDTO>
|
||||
* @author yzh
|
||||
* @date 2022/11/3
|
||||
*/
|
||||
List<GeneratrixAndPowerStationDTO> getGeneratrixAndPowerStationInfo(@Param("param") PmsGeneratrixParam param);
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.njcn.device.pms.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.njcn.device.pms.pojo.po.PmsMonitorPO;
|
||||
import com.njcn.device.pms.pojo.vo.RStatBusbarHarmonicVO;
|
||||
import com.njcn.device.pms.pojo.po.RStatBusbarHarmonicYPO;
|
||||
import com.njcn.device.pms.pojo.vo.RStatBusbarHarmonicYVO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
@@ -16,27 +16,18 @@ import java.util.List;
|
||||
*/
|
||||
|
||||
@Mapper
|
||||
public interface RStatBusbarHarmonicMapper extends BaseMapper<RStatBusbarHarmonicVO> {
|
||||
|
||||
/**
|
||||
* 根据部门id查询监测点id
|
||||
*
|
||||
* @param deptIds 部门id
|
||||
* @return 监测点id
|
||||
*/
|
||||
List<PmsMonitorPO> getMonitorInfo(@Param("deptIds") List<String> deptIds);
|
||||
|
||||
public interface RStatBusbarHarmonicMapper extends BaseMapper<RStatBusbarHarmonicYVO> {
|
||||
|
||||
/**
|
||||
* 查询变电站背景谐波年表
|
||||
*
|
||||
* @param startTime 开始时间
|
||||
* @param endTime 结束时间
|
||||
* @param startTime 开始时间
|
||||
* @param endTime 结束时间
|
||||
* @param generatrixIds 母线id
|
||||
* @return 获取变电站母线电压指标年报
|
||||
*/
|
||||
List<RStatBusbarHarmonicVO> getAnnualReportOfSubstationBusVoltageIndex(@Param("startTime") String startTime,
|
||||
@Param("endTime") String endTime,
|
||||
@Param("busbarIds") List<String> generatrixIds);
|
||||
List<RStatBusbarHarmonicYPO> getRStatBusbarHarmonic(@Param("startTime") String startTime,
|
||||
@Param("endTime") String endTime,
|
||||
@Param("generatrixIds") List<String> generatrixIds);
|
||||
|
||||
}
|
||||
|
||||
@@ -5,31 +5,82 @@
|
||||
<!--获取母线信息-->
|
||||
<select id="getGeneratrixInfo" resultType="com.njcn.device.pms.pojo.dto.PmsGeneratrixDTO">
|
||||
SELECT
|
||||
Org_Id AS orgId,
|
||||
Org_Name AS orgName,
|
||||
Powerr_Id AS powerId,
|
||||
Powerr_Name AS powerName,
|
||||
Generatrix_Id AS generatrixId,
|
||||
Generatrix_Name AS generatrixName,
|
||||
Id AS monitorId,
|
||||
`Name` AS monitorName,
|
||||
Voltage_Level AS generatrixVoltageLevel
|
||||
pm.Org_Id AS orgId,
|
||||
pm.Org_Name AS orgName,
|
||||
pm.Powerr_Id AS powerId,
|
||||
pm.Powerr_Name AS powerName,
|
||||
pg.Generatrix_Id AS generatrixId,
|
||||
pm.Generatrix_Name AS generatrixName,
|
||||
pm.Id AS monitorId,
|
||||
pm.`Name` AS monitorName,
|
||||
pg.Scale AS generatrixVoltageLevel
|
||||
FROM
|
||||
pms_monitor
|
||||
pms_generatrix AS pg
|
||||
LEFT JOIN pms_monitor AS pm ON pm.Generatrix_Id = pg.Generatrix_Id
|
||||
WHERE
|
||||
Status = 1
|
||||
AND Generatrix_Id IN
|
||||
pm.`Status` = 1
|
||||
AND pg.`Status` =1
|
||||
AND pg.Generatrix_Id IN
|
||||
<foreach collection="pmsGeneratrixParam.generatrixIds" item="item" open="(" close=")" separator=",">
|
||||
#{item}
|
||||
</foreach>
|
||||
<if test="pmsGeneratrixParam.generatrixVoltageLevel != null and pmsGeneratrixParam.generatrixVoltageLevel.size() != 0">
|
||||
AND Voltage_Level IN
|
||||
<foreach collection="pmsGeneratrixParam.generatrixVoltageLevel" item="item" open="(" close=")" separator=",">
|
||||
AND pg.Scale IN
|
||||
<foreach collection="pmsGeneratrixParam.generatrixVoltageLevel" item="item" open="(" close=")"
|
||||
separator=",">
|
||||
#{item}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="pmsGeneratrixParam.generatrixName != null and pmsGeneratrixParam.generatrixName != ''">
|
||||
AND Generatrix_Name LIKE CONCAT('%',#{pmsGeneratrixParam.generatrixName},'%')
|
||||
AND pm.Generatrix_Name LIKE CONCAT('%',#{pmsGeneratrixParam.generatrixName},'%')
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<!--获取母线与电站关联信息-->
|
||||
<select id="getGeneratrixAndPowerStationInfo"
|
||||
resultType="com.njcn.device.pms.pojo.dto.GeneratrixAndPowerStationDTO">
|
||||
SELECT
|
||||
pg.Generatrix_Id AS generatrixId,
|
||||
pg.Generatrix_Name AS generatrixName,
|
||||
pg.Scale AS generatrixVoltageLevel,
|
||||
pss.Power_Id AS powerId,
|
||||
pss.Power_Name AS powerName,
|
||||
pss.Voltage_Level AS powerVoltageLevel
|
||||
FROM
|
||||
pms_generatrix AS pg
|
||||
LEFT JOIN pms_statation_stat AS pss ON pg.Statation_Id = pss.Power_Id
|
||||
WHERE
|
||||
pg.`Status` = 1
|
||||
AND pss.`Status` = 1
|
||||
<if test="param.generatrixIds != null and param.generatrixIds.size() >0 ">
|
||||
AND pg.Generatrix_Id IN
|
||||
<foreach collection="param.generatrixIds" item="item" open="(" close=")" separator=",">
|
||||
#{item}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="param.powerStationIds != null and param.powerStationIds.size() >0 ">
|
||||
AND pss.Power_Id IN
|
||||
<foreach collection="param.powerStationIds" item="item" open="(" close=")" separator=",">
|
||||
#{item}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="param.generatrixVoltageLevel != null and param.generatrixVoltageLevel.size() >0 ">
|
||||
AND pg.Scale IN
|
||||
<foreach collection="param.generatrixVoltageLevel" item="item" open="(" close=")" separator=",">
|
||||
#{item}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="param.powerStationVoltageLevel != null and param.powerStationVoltageLevel.size() >0 ">
|
||||
AND pss.Voltage_Level IN
|
||||
<foreach collection="param.powerStationVoltageLevel" item="item" open="(" close=")" separator=",">
|
||||
#{item}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="param.generatrixName != null and param.generatrixName !='' ">
|
||||
AND pg.Generatrix_Name LIKE CONCAT('%',#{param.generatrixName},'%')
|
||||
</if>
|
||||
<if test="param.powerStationName != null and param.powerStationName !='' ">
|
||||
AND pss.Power_Name LIKE CONCAT('%',#{param.powerStationName},'%')
|
||||
</if>
|
||||
</select>
|
||||
|
||||
|
||||
@@ -2,44 +2,35 @@
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.njcn.device.pms.mapper.RStatBusbarHarmonicMapper">
|
||||
|
||||
<!--根据部门id查询监测点id-->
|
||||
<select id="getMonitorInfo" resultType="com.njcn.device.pms.pojo.po.PmsMonitorPO">
|
||||
SELECT
|
||||
id,
|
||||
`Name`,
|
||||
Org_Name AS orgName,
|
||||
Org_Id AS orgId,
|
||||
Operation_Name AS operationName,
|
||||
Operation_Id AS operationId,
|
||||
Powerr_Name AS powerrName,
|
||||
Powerr_Id AS powerrId,
|
||||
Generatrix_Name AS generatrixName,
|
||||
Generatrix_Id AS generatrixId
|
||||
FROM
|
||||
pms_monitor
|
||||
WHERE
|
||||
Org_Id IN ()
|
||||
<foreach collection="deptIds" item="item" open="(" close=")" separator=",">
|
||||
#{item}
|
||||
</foreach>
|
||||
</select>
|
||||
|
||||
|
||||
|
||||
<!--查询变电站背景谐波年表-->
|
||||
<select id="getAnnualReportOfSubstationBusVoltageIndex"
|
||||
resultType="com.njcn.device.pms.pojo.vo.RStatBusbarHarmonicVO">
|
||||
<select id="getRStatBusbarHarmonic"
|
||||
resultType="com.njcn.device.pms.pojo.po.RStatBusbarHarmonicYPO">
|
||||
SELECT
|
||||
*
|
||||
busbar_id AS busbarId,
|
||||
data_date AS dataDate,
|
||||
v_effective_max AS vEffectiveMax,
|
||||
v_effective_min AS vEffectiveMin,
|
||||
v_effective_avg AS vEffectiveAvg,
|
||||
v_effective_95 AS vEffective95,
|
||||
v_thd_max AS vThdMax,
|
||||
v_thd_min AS vThdMin,
|
||||
v_thd_avg AS vThdAvg,
|
||||
v_thd_95 AS vThd95,
|
||||
unbalance_max AS unbalanceMax,
|
||||
unbalance_min AS unbalanceMin,
|
||||
unbalance_avg AS unbalanceAvg,
|
||||
unbalance_95 AS unbalance95,
|
||||
flicker_max AS flickerMax,
|
||||
flicker_min AS flickerMin,
|
||||
flicker_avg AS flickerAvg,
|
||||
flicker_95 AS flicker95
|
||||
FROM
|
||||
r_stat_busbar_harmonic_y
|
||||
WHERE
|
||||
<if test="busbarIds != null and busbarIds.size() > 0">
|
||||
busbar_id IN
|
||||
<foreach collection="generatrixIds" item="item" open="(" close=")" separator=",">
|
||||
#{item}
|
||||
</foreach>
|
||||
</if>
|
||||
busbar_id IN
|
||||
<foreach collection="generatrixIds" item="item" open="(" close=")" separator=",">
|
||||
#{item}
|
||||
</foreach>
|
||||
<if test="startTime != null and startTime != ''">
|
||||
AND DATE_FORMAT( data_date,'%Y-%m-%d') >= DATE_FORMAT(#{startTime},'%Y-%m-%d')
|
||||
</if>
|
||||
@@ -47,4 +38,4 @@
|
||||
AND DATE_FORMAT( data_date,'%Y-%m-%d') <= DATE_FORMAT(#{endTime},'%Y-%m-%d')
|
||||
</if>
|
||||
</select>
|
||||
</mapper>
|
||||
</mapper>
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.njcn.device.pms.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.njcn.device.pms.pojo.dto.GeneratrixAndPowerStationDTO;
|
||||
import com.njcn.device.pms.pojo.dto.PmsGeneratrixDTO;
|
||||
import com.njcn.device.pms.pojo.param.GeneratrixParam;
|
||||
import com.njcn.device.pms.pojo.param.PmsGeneratrixParam;
|
||||
@@ -19,54 +20,68 @@ public interface IPmsGeneratrixService extends IService<Generatrix> {
|
||||
/**
|
||||
* 获取母线信息
|
||||
*
|
||||
* @param pmsGeneratrixParam 入参
|
||||
* @param param 入参
|
||||
* @return 母线信息
|
||||
*/
|
||||
List<PmsGeneratrixDTO> getGeneratrixInfo(PmsGeneratrixParam pmsGeneratrixParam);
|
||||
|
||||
List<PmsGeneratrixDTO> getGeneratrixInfo(PmsGeneratrixParam param);
|
||||
|
||||
/**
|
||||
* 新增母线
|
||||
* @author cdf
|
||||
* @date 2022/10/25
|
||||
*
|
||||
* @param generatrixParam 母线
|
||||
* @return boolean
|
||||
* @author cdf
|
||||
* @date 2022/10/25
|
||||
*/
|
||||
boolean addGeneratrix(GeneratrixParam generatrixParam);
|
||||
|
||||
/**
|
||||
* 修改母线
|
||||
* @author cdf
|
||||
* @date 2022/10/25
|
||||
*
|
||||
* @param generatrixParam 母线
|
||||
* @return boolean
|
||||
* @author cdf
|
||||
* @date 2022/10/25
|
||||
*/
|
||||
boolean updateGeneratrix(GeneratrixParam.UpdateGeneratrixParam generatrixParam);
|
||||
|
||||
/**
|
||||
* 删除母线
|
||||
* @author cdf
|
||||
* @date 2022/10/25
|
||||
*
|
||||
* @param generatrixIds 母线
|
||||
* @return boolean
|
||||
* @author cdf
|
||||
* @date 2022/10/25
|
||||
*/
|
||||
boolean delGeneratrix(List<String> generatrixIds);
|
||||
|
||||
/**
|
||||
* 查询母线
|
||||
* @author cdf
|
||||
* @date 2022/10/25
|
||||
*
|
||||
* @param generatrixId 母线id
|
||||
* @return boolean
|
||||
* @author cdf
|
||||
* @date 2022/10/25
|
||||
*/
|
||||
Generatrix getGeneratrixById(String generatrixId);
|
||||
|
||||
/**
|
||||
* 查询母线列表
|
||||
* @author cdf
|
||||
* @date 2022/10/25
|
||||
*
|
||||
* @param baseParam 基础参数
|
||||
* @return boolean
|
||||
* @author cdf
|
||||
* @date 2022/10/25
|
||||
*/
|
||||
List<Generatrix> getGeneratrixList(BaseParam baseParam);
|
||||
|
||||
/**
|
||||
* 获取母线与电站关联信息
|
||||
*
|
||||
* @param param 条件参数
|
||||
* @return java.util.List<com.njcn.device.pms.pojo.dto.PmsGeneratrixDTO>
|
||||
* @author yzh
|
||||
* @date 2022/11/3
|
||||
*/
|
||||
List<GeneratrixAndPowerStationDTO> getGeneratrixAndPowerStationInfo(PmsGeneratrixParam param);
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ package com.njcn.device.pms.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.njcn.device.pms.pojo.param.UniversalFrontEndParam;
|
||||
import com.njcn.device.pms.pojo.vo.RStatBusbarHarmonicVO;
|
||||
import com.njcn.device.pms.pojo.vo.RStatBusbarHarmonicYVO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -14,7 +14,7 @@ import java.util.List;
|
||||
* @date 2022/10/8
|
||||
*/
|
||||
|
||||
public interface RStatBusbarHarmonicService extends IService<RStatBusbarHarmonicVO> {
|
||||
public interface RStatBusbarHarmonicService extends IService<RStatBusbarHarmonicYVO> {
|
||||
|
||||
/**
|
||||
* 获取变电站母线电压指标年报
|
||||
@@ -22,6 +22,6 @@ public interface RStatBusbarHarmonicService extends IService<RStatBusbarHarmonic
|
||||
* @param param 前端参数
|
||||
* @return 变电站母线电压指标年报返回前端实体类
|
||||
*/
|
||||
List<RStatBusbarHarmonicVO> getRStatBusbarHarmonic(UniversalFrontEndParam param);
|
||||
List<RStatBusbarHarmonicYVO> getRStatBusbarHarmonic(UniversalFrontEndParam param);
|
||||
|
||||
}
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
package com.njcn.device.pms.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.njcn.device.pms.mapper.PmsGeneratrixMapper;
|
||||
import com.njcn.device.pms.pojo.dto.GeneratrixAndPowerStationDTO;
|
||||
import com.njcn.device.pms.pojo.dto.PmsGeneratrixDTO;
|
||||
import com.njcn.device.pms.pojo.param.GeneratrixParam;
|
||||
import com.njcn.device.pms.pojo.param.PmsGeneratrixParam;
|
||||
@@ -27,31 +29,31 @@ public class PmsGeneratrixServiceImpl extends ServiceImpl<PmsGeneratrixMapper, G
|
||||
|
||||
private final PmsGeneratrixMapper pmsGeneratrixMapper;
|
||||
|
||||
|
||||
/**
|
||||
* 获取母线信息
|
||||
*
|
||||
* @param pmsGeneratrixParam 入参
|
||||
* @param param 入参
|
||||
* @return 母线信息
|
||||
*/
|
||||
@Override
|
||||
public List<PmsGeneratrixDTO> getGeneratrixInfo(PmsGeneratrixParam pmsGeneratrixParam) {
|
||||
return pmsGeneratrixMapper.getGeneratrixInfo(pmsGeneratrixParam);
|
||||
public List<PmsGeneratrixDTO> getGeneratrixInfo(PmsGeneratrixParam param) {
|
||||
if (CollUtil.isEmpty(param.getGeneratrixIds())) {
|
||||
return null;
|
||||
}
|
||||
return pmsGeneratrixMapper.getGeneratrixInfo(param);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public boolean addGeneratrix(GeneratrixParam generatrixParam) {
|
||||
Generatrix generatrix = new Generatrix();
|
||||
BeanUtils.copyProperties(generatrixParam,generatrix);
|
||||
BeanUtils.copyProperties(generatrixParam, generatrix);
|
||||
return this.save(generatrix);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean updateGeneratrix(GeneratrixParam.UpdateGeneratrixParam generatrixParam) {
|
||||
Generatrix generatrix = new Generatrix();
|
||||
BeanUtils.copyProperties(generatrixParam,generatrix);
|
||||
BeanUtils.copyProperties(generatrixParam, generatrix);
|
||||
return this.save(generatrix);
|
||||
}
|
||||
|
||||
@@ -69,4 +71,17 @@ public class PmsGeneratrixServiceImpl extends ServiceImpl<PmsGeneratrixMapper, G
|
||||
public List<Generatrix> getGeneratrixList(BaseParam baseParam) {
|
||||
return this.list();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取母线与电站关联信息
|
||||
*
|
||||
* @param param 条件参数
|
||||
* @return java.util.List<com.njcn.device.pms.pojo.dto.PmsGeneratrixDTO>
|
||||
* @author yzh
|
||||
* @date 2022/11/3
|
||||
*/
|
||||
@Override
|
||||
public List<GeneratrixAndPowerStationDTO> getGeneratrixAndPowerStationInfo(PmsGeneratrixParam param) {
|
||||
return pmsGeneratrixMapper.getGeneratrixAndPowerStationInfo(param);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,24 +1,28 @@
|
||||
package com.njcn.device.pms.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.njcn.common.pojo.dto.SimpleDTO;
|
||||
import com.njcn.device.pms.api.PmsGeneralDeviceInfoClient;
|
||||
import com.njcn.device.pms.api.PmsGeneratrixClient;
|
||||
import com.njcn.device.pms.mapper.RStatBusbarHarmonicMapper;
|
||||
import com.njcn.device.pms.pojo.dto.GeneratrixAndPowerStationDTO;
|
||||
import com.njcn.device.pms.pojo.dto.PmsGeneralDeviceDTO;
|
||||
import com.njcn.device.pms.pojo.dto.PmsGeneratrixDTO;
|
||||
import com.njcn.device.pms.pojo.param.PmsDeviceInfoParam;
|
||||
import com.njcn.device.pms.pojo.param.PmsGeneratrixParam;
|
||||
import com.njcn.device.pms.pojo.param.UniversalFrontEndParam;
|
||||
import com.njcn.device.pms.pojo.po.PmsMonitorPO;
|
||||
import com.njcn.device.pms.pojo.vo.RStatBusbarHarmonicVO;
|
||||
import com.njcn.device.pms.pojo.po.RStatBusbarHarmonicYPO;
|
||||
import com.njcn.device.pms.pojo.vo.RStatBusbarHarmonicYVO;
|
||||
import com.njcn.device.pms.service.RStatBusbarHarmonicService;
|
||||
import com.njcn.system.api.DicDataFeignClient;
|
||||
import com.njcn.system.enums.DicDataTypeEnum;
|
||||
import com.njcn.system.pojo.po.DictData;
|
||||
import com.njcn.user.api.DeptFeignClient;
|
||||
import com.njcn.user.pojo.dto.DeptDTO;
|
||||
import com.njcn.web.utils.WebUtil;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@@ -31,14 +35,13 @@ import java.util.stream.Collectors;
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
public class RStatBusbarHarmonicServiceImpl extends ServiceImpl<RStatBusbarHarmonicMapper, RStatBusbarHarmonicVO> implements RStatBusbarHarmonicService {
|
||||
public class RStatBusbarHarmonicServiceImpl extends ServiceImpl<RStatBusbarHarmonicMapper, RStatBusbarHarmonicYVO> implements RStatBusbarHarmonicService {
|
||||
|
||||
private final RStatBusbarHarmonicMapper rStatBusbarHarmonicMapper;
|
||||
|
||||
private final DicDataFeignClient dicDataFeignClient;
|
||||
|
||||
private final DeptFeignClient deptFeignClient;
|
||||
private final PmsGeneratrixClient pmsGeneratrixClient;
|
||||
|
||||
private final PmsGeneralDeviceInfoClient pmsGeneralDeviceInfoClient;
|
||||
|
||||
/**
|
||||
* 获取变电站母线电压指标年报
|
||||
@@ -47,76 +50,69 @@ public class RStatBusbarHarmonicServiceImpl extends ServiceImpl<RStatBusbarHarmo
|
||||
* @return 变电站母线电压指标年报返回前端实体类
|
||||
*/
|
||||
@Override
|
||||
public List<RStatBusbarHarmonicVO> getRStatBusbarHarmonic(UniversalFrontEndParam param) {
|
||||
|
||||
// 获取登录用户的部门id
|
||||
// String deptIndex = RequestUtil.getDeptIndex();
|
||||
|
||||
public List<RStatBusbarHarmonicYVO> getRStatBusbarHarmonic(UniversalFrontEndParam param) {
|
||||
// 获取当前用户的部门的子部门信息
|
||||
List<DeptDTO> data = deptFeignClient.getDeptDescendantIndexes(param.getId(), WebUtil.filterDeptType()).getData();
|
||||
PmsDeviceInfoParam pmsDeviceInfoParam = new PmsDeviceInfoParam();
|
||||
pmsDeviceInfoParam.setDeptIndex(param.getId());
|
||||
pmsDeviceInfoParam.setStatisticalType(new SimpleDTO());
|
||||
List<PmsGeneralDeviceDTO> data = pmsGeneralDeviceInfoClient.getPmsDeviceInfoWithInOrg(pmsDeviceInfoParam).getData();
|
||||
if (CollUtil.isEmpty(data)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
if (CollectionUtil.isNotEmpty(data)) {
|
||||
// 创建集合用于封装数据
|
||||
List<RStatBusbarHarmonicVO> info = new ArrayList<>();
|
||||
|
||||
// 过滤出部门id
|
||||
List<String> deptIds = data.stream().map(DeptDTO::getId).collect(Collectors.toList());
|
||||
// 根据部门id 获取监测点信息
|
||||
List<PmsMonitorPO> monitorInfo = rStatBusbarHarmonicMapper.getMonitorInfo(deptIds);
|
||||
// 取出母线id
|
||||
List<String> generatrixIds = monitorInfo.stream().map(PmsMonitorPO::getGeneratrixId).collect(Collectors.toList());
|
||||
|
||||
// 获取电压字典
|
||||
List<DictData> devVoltageData = dicDataFeignClient.getDicDataByTypeCode(
|
||||
DicDataTypeEnum.DEV_VOLTAGE.getCode()).getData();
|
||||
// 创建集合封装返回数据
|
||||
List<RStatBusbarHarmonicYVO> result = new ArrayList<>();
|
||||
|
||||
for (PmsGeneralDeviceDTO dto : data) {
|
||||
if (CollUtil.isEmpty(dto.getGeneratrixIdList())) {
|
||||
continue;
|
||||
}
|
||||
// 通过母线id查询变电站背景谐波年表
|
||||
info = rStatBusbarHarmonicMapper.getAnnualReportOfSubstationBusVoltageIndex(param.getStartTime(), param.getEndTime(), generatrixIds);
|
||||
List<RStatBusbarHarmonicYPO> info = rStatBusbarHarmonicMapper.getRStatBusbarHarmonic(param.getStartTime(), param.getEndTime(), dto.getGeneratrixIdList());
|
||||
|
||||
// 属性赋值
|
||||
for (RStatBusbarHarmonicVO vo : info) {
|
||||
for (PmsMonitorPO pmsMonitor : monitorInfo) {
|
||||
if (vo.getBusbarId().equals(pmsMonitor.getGeneratrixId())){
|
||||
vo.setDeptId(pmsMonitor.getOrgId());
|
||||
}
|
||||
for (RStatBusbarHarmonicYPO po : info) {
|
||||
RStatBusbarHarmonicYVO vo = new RStatBusbarHarmonicYVO();
|
||||
vo.setDeptId(dto.getIndex());
|
||||
vo.setDeptName(dto.getName());
|
||||
vo.setBusbarId(po.getBusbarId());
|
||||
vo.setDataDate(po.getDataDate());
|
||||
vo.setVEffectiveMax(po.getVEffectiveMax());
|
||||
vo.setVEffectiveMin(po.getVEffectiveMin());
|
||||
vo.setVEffectiveAvg(po.getVEffectiveAvg());
|
||||
vo.setVEffective95(po.getVEffective95());
|
||||
vo.setVThdMax(po.getVThdMax());
|
||||
vo.setVThdMin(po.getVThdMin());
|
||||
vo.setVThdAvg(po.getVThdAvg());
|
||||
vo.setVThd95(po.getVThd95());
|
||||
vo.setUnbalanceMax(po.getUnbalanceMax());
|
||||
vo.setUnbalanceMin(po.getUnbalanceMin());
|
||||
vo.setUnbalanceAvg(po.getUnbalanceAvg());
|
||||
vo.setUnbalance95(po.getUnbalance95());
|
||||
vo.setFlickerMax(po.getFlickerMax());
|
||||
vo.setFlickerMin(po.getFlickerMin());
|
||||
vo.setFlickerAvg(po.getFlickerAvg());
|
||||
vo.setFlicker95(po.getFlicker95());
|
||||
result.add(vo);
|
||||
}
|
||||
}
|
||||
// 取出母线id
|
||||
List<String> busbarIds = result.stream().map(RStatBusbarHarmonicYVO::getBusbarId).collect(Collectors.toList());
|
||||
PmsGeneratrixParam pmsGeneratrixParam = new PmsGeneratrixParam();
|
||||
pmsGeneratrixParam.setGeneratrixIds(busbarIds);
|
||||
List<GeneratrixAndPowerStationDTO> dtoS = pmsGeneratrixClient.getGeneratrixAndPowerStationInfo(pmsGeneratrixParam).getData();
|
||||
|
||||
for (GeneratrixAndPowerStationDTO dto : dtoS) {
|
||||
for (RStatBusbarHarmonicYVO vo : result) {
|
||||
if (dto.getGeneratrixId().equals(vo.getBusbarId())){
|
||||
vo.setBusbarName(dto.getGeneratrixName());
|
||||
vo.setSubId(dto.getPowerId());
|
||||
vo.setSubName(dto.getPowerName());
|
||||
vo.setSubVoltageLevel(dto.getPowerVoltageLevel());
|
||||
}
|
||||
}
|
||||
|
||||
return info;
|
||||
} else {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 属性赋值
|
||||
*
|
||||
* @param data 当前用户的部门的子部门信息
|
||||
* @param annualReportOfSubstationBusVoltageIndex 母线id查询变电站背景谐波年表
|
||||
* @param subAndVoltageInfos 母线和变电站信息
|
||||
* @return 返回前端集合
|
||||
*/
|
||||
private void attributeCopy(List<DeptDTO> data, List<RStatBusbarHarmonicVO> annualReportOfSubstationBusVoltageIndex, List<RStatBusbarHarmonicVO> subAndVoltageInfos) {
|
||||
// 属性赋值
|
||||
for (RStatBusbarHarmonicVO vo : annualReportOfSubstationBusVoltageIndex) {
|
||||
for (RStatBusbarHarmonicVO subAndVoltageInfo : subAndVoltageInfos) {
|
||||
if (subAndVoltageInfo.getBusbarId().equals(vo.getBusbarId())) {
|
||||
vo.setDeptId(subAndVoltageInfo.getDeptId());
|
||||
vo.setSubName(subAndVoltageInfo.getSubName());
|
||||
vo.setSubVoltageLevel(subAndVoltageInfo.getSubVoltageLevel());
|
||||
vo.setBusbarName(subAndVoltageInfo.getBusbarName());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 属性赋值
|
||||
for (RStatBusbarHarmonicVO vo : annualReportOfSubstationBusVoltageIndex) {
|
||||
for (DeptDTO datum : data) {
|
||||
if (datum.getId().equals(vo.getDeptId())) {
|
||||
vo.setCompany(datum.getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.njcn.device.pq.constant;
|
||||
|
||||
|
||||
/**
|
||||
* @author qijian
|
||||
*/
|
||||
public interface Param {
|
||||
|
||||
/**
|
||||
* 算法处理
|
||||
*/
|
||||
String TARGET_FREQ = "freq";
|
||||
String TARGET_RMS = "rms";
|
||||
String TARGET_RMS_LVR = "rms_lvr";
|
||||
String TARGET_V_THD = "v_thd";
|
||||
String TARGET_V_UNBALANCE = "v_unbalance";
|
||||
|
||||
Integer YEAR = 1;
|
||||
Integer QUARTER = 2;
|
||||
Integer MONTH = 3;
|
||||
Integer WEEK = 4;
|
||||
Integer DAY = 5;
|
||||
|
||||
}
|
||||
@@ -62,7 +62,13 @@ public enum DeviceResponseEnum {
|
||||
DEPT_LINE_EMPTY("A2072","当前用户部门未有监测点绑定"),
|
||||
DIC_GET_EMPTY("A2073","字典获取为空"),
|
||||
|
||||
|
||||
ALGORITHM_LINE_EMPTY("A00558","算法监测点数据为空"),
|
||||
ALGORITHM_FREP_RULE("A00559","该监测点频率数据异常"),
|
||||
ALGORITHM_RMS_RULE("A00560","该监测点相变压数据异常"),
|
||||
ALGORITHM_RMS_LVR_RULE("A00561","该监测点线变压数据异常"),
|
||||
ALGORITHM_V_THD_RULE("A00562","该监测点电压总谐波畸变率数据异常"),
|
||||
ALGORITHM_V_UNBALANCE_RULE("A00563","该监测点负序电压不平衡度数据异常"),
|
||||
ALGORITHM_DATA_ERROR("A00564","未获取到data数据"),
|
||||
|
||||
INVALID_LEVEL("A2074","非法拓扑等级"),
|
||||
LINE_EMPTY("A2075","监测点为空"),
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
package com.njcn.device.pq.pojo.param;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* 算法通用查询参数
|
||||
*
|
||||
* @author qijian
|
||||
* @date 2022/10/26
|
||||
*/
|
||||
@Data
|
||||
public class AlgorithmSearchParam {
|
||||
|
||||
@ApiModelProperty(name = "id",value = "监测点ID")
|
||||
@NotBlank(message = "监测点不能为空")
|
||||
private String id;
|
||||
|
||||
@ApiModelProperty(name = "type",value = "时间类型")
|
||||
@NotNull(message = "时间类型不能为空")
|
||||
private Integer type;
|
||||
|
||||
@ApiModelProperty(name = "datadate",value = "查询时间")
|
||||
@NotBlank(message = "时间不能为空")
|
||||
private String datadate;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
package com.njcn.device.pq.pojo.po;
|
||||
|
||||
import lombok.Data;
|
||||
import org.influxdb.annotation.Column;
|
||||
import org.influxdb.annotation.Measurement;
|
||||
|
||||
import java.time.Instant;
|
||||
|
||||
/**
|
||||
* DataV influxDB别名映射表
|
||||
*
|
||||
* @author qijian
|
||||
* @version 1.0.0
|
||||
* @createTime 2022/10/27 15:27
|
||||
*/
|
||||
@Data
|
||||
@Measurement(name = "data_v")
|
||||
public class DataV {
|
||||
|
||||
@Column(name = "time")
|
||||
private Instant time;
|
||||
|
||||
@Column(name = "line_id")
|
||||
private String lineId;
|
||||
|
||||
@Column(name = "freq_max")
|
||||
private Double frepMAX;
|
||||
|
||||
@Column(name = "freq_min")
|
||||
private Double frepMIN;
|
||||
|
||||
@Column(name = "rms_max")
|
||||
private Double rmsMAX;
|
||||
|
||||
@Column(name = "rms_min")
|
||||
private Double rmsMIN;
|
||||
|
||||
@Column(name = "rms_lvr_max")
|
||||
private Double rmsLvrMAX;
|
||||
|
||||
@Column(name = "rms_lvr_min")
|
||||
private Double rmsLvrMIN;
|
||||
|
||||
@Column(name = "v_thd_max")
|
||||
private Double vThdMAX;
|
||||
|
||||
@Column(name = "v_thd_min")
|
||||
private Double vThdMIN;
|
||||
|
||||
@Column(name = "v_unbalance_max")
|
||||
private Double vUnbalanceMAX;
|
||||
|
||||
@Column(name = "v_unbalance_min")
|
||||
private Double vUnbalanceMIN;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
package com.njcn.device.pq.pojo.po;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* (PmsAbnormalRules)实体类
|
||||
*
|
||||
* @author qijian
|
||||
* @since 2022-10-27 14:49:22
|
||||
*/
|
||||
@Data
|
||||
@TableName(value = "pms_abnormal_rules")
|
||||
public class PmsAbnormalRules implements Serializable {
|
||||
private static final long serialVersionUID = -68797682413850371L;
|
||||
/**
|
||||
* 主键
|
||||
*/
|
||||
private String id;
|
||||
/**
|
||||
* 规则类型(字典 0 数据异常 1......)
|
||||
*/
|
||||
private Integer type;
|
||||
/**
|
||||
* 指标名称
|
||||
*/
|
||||
private String targetName;
|
||||
/**
|
||||
* 对应字段
|
||||
*/
|
||||
private String target;
|
||||
/**
|
||||
* 下限
|
||||
*/
|
||||
private Double lowerLimit;
|
||||
/**
|
||||
* 上限
|
||||
*/
|
||||
private Double upperLimit;
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
package com.njcn.device.pq.pojo.po;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* (RMpIntegrityD)实体类
|
||||
*
|
||||
* @author qijian
|
||||
* @since 2022-10-26 14:10:32
|
||||
*/
|
||||
@Data
|
||||
@TableName(value = "r_mp_integrity_d")
|
||||
public class RMpIntegrityD implements Serializable {
|
||||
private static final long serialVersionUID = 320784653665837465L;
|
||||
/**
|
||||
* 监测点id
|
||||
*/
|
||||
private String measurementPointId;
|
||||
/**
|
||||
* 生成数据的时间,每天统计一次
|
||||
*/
|
||||
private Date dataDate;
|
||||
/**
|
||||
* 有效接入分钟数量
|
||||
*/
|
||||
private Integer effectiveMinuteCount;
|
||||
/**
|
||||
* 频率平均值指标数据个数
|
||||
*/
|
||||
private Integer freqCount;
|
||||
/**
|
||||
* 相电压有效值平均值指标数据个数
|
||||
*/
|
||||
private Integer phaseVoltageCount;
|
||||
/**
|
||||
* 线电压有效值平均值指标数据个数
|
||||
*/
|
||||
private Integer lineVoltageCount;
|
||||
/**
|
||||
* 电压总谐波畸变率平均值指标数据个数
|
||||
*/
|
||||
private Integer vThdCount;
|
||||
/**
|
||||
* 三相电压不平衡度平均值指标数据个数
|
||||
*/
|
||||
private Integer unbalanceCount;
|
||||
/**
|
||||
* 监测点短时闪变、电压波动类指标数据个数
|
||||
*/
|
||||
private Integer pstCount;
|
||||
/**
|
||||
* 监测点长时闪变指标数据个数
|
||||
*/
|
||||
private Integer pltCount;
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
package com.njcn.device.pq.pojo.po;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* (RStatAbnormalD)实体类
|
||||
*
|
||||
* @author qijian
|
||||
* @since 2022-10-27 14:49:43
|
||||
*/
|
||||
@Data
|
||||
@TableName(value = "r_stat_abnormal_d")
|
||||
public class RStatAbnormalD implements Serializable {
|
||||
private static final long serialVersionUID = 130540916944391303L;
|
||||
/**
|
||||
* 时间
|
||||
*/
|
||||
private Date dataDate;
|
||||
/**
|
||||
* 监测点ID
|
||||
*/
|
||||
private String measurementPointId;
|
||||
/**
|
||||
* 数据是否异常(0异常,1正常)
|
||||
*/
|
||||
private Integer valueAlarm;
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
package com.njcn.device.pq.pojo.vo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* Description:部门设备统计
|
||||
* 接口文档访问地址:http://serverIP:port/swagger-ui.html
|
||||
* Date: 2022/10/14 10:45【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@ApiModel(value = "DeptDeviceDetailVO" ,description = "部门设备统计")
|
||||
public class DeptDeviceDetailVO implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("设备总数")
|
||||
private Integer deviceCount;
|
||||
|
||||
|
||||
@ApiModelProperty("运行设备设备总数")
|
||||
private Integer runDeviceCount;
|
||||
|
||||
|
||||
@ApiModelProperty("设备在线率")
|
||||
private BigDecimal onLineRate;
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
package com.njcn.device.pq.pojo.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* Description:部门设备统计
|
||||
* 接口文档访问地址:http://serverIP:port/swagger-ui.html
|
||||
* Date: 2022/10/14 10:45【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@ApiModel(value = "DeptSubstationDetailVO" ,description = "部门变电站统计")
|
||||
public class DeptSubstationDetailVO implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("变电站总数")
|
||||
private Integer substationCount;
|
||||
|
||||
|
||||
@ApiModelProperty("运行变电站总数")
|
||||
private Integer runsubstationCount;
|
||||
|
||||
|
||||
@ApiModelProperty("变电站在线率")
|
||||
private BigDecimal onLineRate;
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -21,6 +21,9 @@ import java.util.List;
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class TerminalTree implements Serializable {
|
||||
@ApiModelProperty(name = "index",value = "序号")
|
||||
private Integer index;
|
||||
|
||||
private String id;
|
||||
@ApiModelProperty(name = "parentId",value = "父id")
|
||||
private String pid;
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
package com.njcn.device.pq.controller;
|
||||
|
||||
import com.njcn.common.pojo.annotation.OperateInfo;
|
||||
import com.njcn.common.pojo.enums.common.LogEnum;
|
||||
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
|
||||
import com.njcn.common.pojo.response.HttpResult;
|
||||
import com.njcn.common.utils.HttpResultUtil;
|
||||
import com.njcn.device.pq.pojo.param.AlgorithmSearchParam;
|
||||
import com.njcn.device.pq.service.DataExceptionService;
|
||||
import com.njcn.web.controller.BaseController;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* @author qijian
|
||||
* @date 2022/10/26
|
||||
* 数据是否异常
|
||||
*/
|
||||
@Validated
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/dataException")
|
||||
@Api(tags = "数据是否异常")
|
||||
@AllArgsConstructor
|
||||
public class DataExceptionController extends BaseController {
|
||||
|
||||
private final DataExceptionService dataExceptionService;
|
||||
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/lineDataException")
|
||||
@ApiOperation("监测点数据是否异常")
|
||||
@ApiImplicitParam(name = "algorithmSearchParam", value = "算法通用查询参数", required = true)
|
||||
public HttpResult<Boolean> lineDataException(@RequestBody @Validated AlgorithmSearchParam algorithmSearchParam) {
|
||||
String methodDescribe = getMethodDescribe("lineDataException");
|
||||
boolean res = dataExceptionService.lineDataException(algorithmSearchParam);
|
||||
if(res){
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
|
||||
}else {
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, methodDescribe);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
package com.njcn.device.pq.controller;
|
||||
|
||||
import com.njcn.common.pojo.annotation.OperateInfo;
|
||||
import com.njcn.common.pojo.enums.common.LogEnum;
|
||||
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
|
||||
import com.njcn.common.pojo.response.HttpResult;
|
||||
import com.njcn.common.utils.HttpResultUtil;
|
||||
import com.njcn.device.pq.pojo.param.AlgorithmSearchParam;
|
||||
import com.njcn.device.pq.service.DataIntegrityRateService;
|
||||
import com.njcn.web.controller.BaseController;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* @author qijian
|
||||
* @date 2022/10/26
|
||||
* 数据完整率算法
|
||||
*/
|
||||
@Validated
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/dataIntegrityRate")
|
||||
@Api(tags = "数据完整率算法")
|
||||
@AllArgsConstructor
|
||||
public class DataIntegrityRateController extends BaseController {
|
||||
|
||||
private final DataIntegrityRateService dataIntegrityRateService;
|
||||
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/lineDataIntegrityRate")
|
||||
@ApiOperation("监测点日数据完整率")
|
||||
@ApiImplicitParam(name = "algorithmSearchParam", value = "算法通用查询参数", required = true)
|
||||
public HttpResult<Boolean> lineDataIntegrityRate(@RequestBody @Validated AlgorithmSearchParam algorithmSearchParam) {
|
||||
String methodDescribe = getMethodDescribe("lineDataIntegrityRate");
|
||||
boolean res = dataIntegrityRateService.lineDataIntegrityRate(algorithmSearchParam);
|
||||
if(res){
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
|
||||
}else {
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, methodDescribe);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -9,6 +9,8 @@ import com.njcn.common.utils.HttpResultUtil;
|
||||
import com.njcn.device.pq.pojo.bo.BaseLineInfo;
|
||||
import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO;
|
||||
import com.njcn.device.pq.pojo.param.DeviceInfoParam;
|
||||
import com.njcn.device.pq.pojo.vo.DeptDeviceDetailVO;
|
||||
import com.njcn.device.pq.pojo.vo.DeptSubstationDetailVO;
|
||||
import com.njcn.device.pq.pojo.vo.ExceptionDeviceInfoVO;
|
||||
import com.njcn.device.pq.service.TerminalBaseService;
|
||||
import com.njcn.device.pq.service.impl.GeneralDeviceService;
|
||||
@@ -124,7 +126,6 @@ public class GeneralDeviceInfoController extends BaseController {
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "deviceInfoParam", value = "查询终端条件", required = true)
|
||||
})
|
||||
@Deprecated
|
||||
public HttpResult<List<GeneralDeviceDTO>> getPracticalRunDeviceInfoAsSubstation(@RequestBody @Validated DeviceInfoParam deviceInfoParam) {
|
||||
String methodDescribe = getMethodDescribe("getPracticalRunDeviceInfoAsSubstation");
|
||||
List<GeneralDeviceDTO> substationDeviceInfos = generalDeviceService.getDeviceInfoAsSubstation(deviceInfoParam, Stream.of(0).collect(Collectors.toList()), Stream.of(1).collect(Collectors.toList()));
|
||||
@@ -229,4 +230,40 @@ public class GeneralDeviceInfoController extends BaseController {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 按部门获取终端设备总数,在线数,在线率
|
||||
*/
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/getDeptDeviceDetail")
|
||||
@ApiOperation("按部门获取终端设备总数,在线数,在线率")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "deviceInfoParam", value = "查询终端条件", required = true)
|
||||
})
|
||||
@Deprecated
|
||||
public HttpResult<DeptDeviceDetailVO> getDeptDeviceDetail(@RequestBody @Validated DeviceInfoParam deviceInfoParam) {
|
||||
String methodDescribe = getMethodDescribe("getDeptDeviceDetail");
|
||||
DeptDeviceDetailVO deptDeviceDetail = generalDeviceService.getDeptDeviceDetail(deviceInfoParam);
|
||||
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, deptDeviceDetail, methodDescribe);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 按部门获变电站数,变电站在线数,在线率
|
||||
*/
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/getDeptSubstationDetail")
|
||||
@ApiOperation("按部门获变电站数,变电站在线数,在线率")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "deviceInfoParam", value = "查询终端条件", required = true)
|
||||
})
|
||||
@Deprecated
|
||||
public HttpResult<DeptSubstationDetailVO> getDeptSubstationDetail(@RequestBody @Validated DeviceInfoParam deviceInfoParam) {
|
||||
String methodDescribe = getMethodDescribe("getDeptSubstationDetail");
|
||||
DeptSubstationDetailVO deptSubstationDetail = generalDeviceService.getDeptSubstationDetail(deviceInfoParam);
|
||||
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, deptSubstationDetail, methodDescribe);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -57,6 +57,7 @@ public interface LineMapper extends BaseMapper<Line> {
|
||||
|
||||
/**
|
||||
* 查询装置下的母线信息
|
||||
*
|
||||
* @param devId 设备id
|
||||
* @date 2022/7/1
|
||||
*/
|
||||
@@ -117,7 +118,7 @@ public interface LineMapper extends BaseMapper<Line> {
|
||||
List<Line> getDeviceById(@Param("devIds") List<String> devIds, @Param("deviceType") DeviceType deviceType);
|
||||
|
||||
|
||||
List<TerminalBaseVO> getDeviceByIdOnOrOff(@Param("devIds") List<String> devIds, @Param("deviceType") DeviceType deviceType,@Param("comFlag")Integer comFlag);
|
||||
List<TerminalBaseVO> getDeviceByIdOnOrOff(@Param("devIds") List<String> devIds, @Param("deviceType") DeviceType deviceType, @Param("comFlag") Integer comFlag);
|
||||
|
||||
|
||||
List<LineDataVO> getLineDetail(@Param("ids") List<String> ids);
|
||||
@@ -176,116 +177,133 @@ public interface LineMapper extends BaseMapper<Line> {
|
||||
|
||||
/**
|
||||
* 获取所有在线投运的监测点限值
|
||||
*
|
||||
* @author cdf
|
||||
* @date 2022/3/23
|
||||
*/
|
||||
List<Overlimit> getAllLineOverLimit(@Param("list")List<Integer> list);
|
||||
List<Overlimit> getAllLineOverLimit(@Param("list") List<Integer> list);
|
||||
|
||||
/**
|
||||
* 根据监测点集合查询基础信息
|
||||
*
|
||||
* @param lineIndex 监测点结合
|
||||
* @return 基础信息
|
||||
*/
|
||||
List<BaseLineInfo> getBaseLineInfo(@Param("list")List<String> lineIndex);
|
||||
List<BaseLineInfo> getBaseLineInfo(@Param("list") List<String> lineIndex);
|
||||
|
||||
|
||||
/**
|
||||
* 获取监测点区域详细信息(原基础上添加监测点区域经纬度信息)
|
||||
*
|
||||
* @param lineIndex 监测点结合
|
||||
* @date 2022/6/29
|
||||
*/
|
||||
List<AreaLineInfoVO> getBaseLineAreaInfo(@Param("list")List<String> lineIndex,@Param("searchValue")String searchValue,@Param("comFlag")Integer comFlag);
|
||||
List<AreaLineInfoVO> getBaseLineAreaInfo(@Param("list") List<String> lineIndex, @Param("searchValue") String searchValue, @Param("comFlag") Integer comFlag);
|
||||
|
||||
/**
|
||||
* 返回监测点信息及通讯状态
|
||||
*
|
||||
* @param lineIndex 监测点集合
|
||||
* @return 结果
|
||||
*/
|
||||
List<LineDeviceStateVO> getLineDeviceStateVO(@Param("list")List<String> lineIndex);
|
||||
List<LineDeviceStateVO> getLineDeviceStateVO(@Param("list") List<String> lineIndex);
|
||||
|
||||
|
||||
/**
|
||||
* 获取变电站信息
|
||||
* @param id 变电站id
|
||||
*
|
||||
* @param id 变电站id
|
||||
* @return 结果
|
||||
*/
|
||||
PollutionSubstationDTO getSubstationInfo(@Param("id")String id);
|
||||
PollutionSubstationDTO getSubstationInfo(@Param("id") String id);
|
||||
|
||||
/**
|
||||
* 获取监测点信息
|
||||
* @param list 监测点集合
|
||||
*
|
||||
* @param list 监测点集合
|
||||
* @return 结果
|
||||
*/
|
||||
List<PollutionLineDTO> getLineInfo(@Param("list") List<String> list);
|
||||
|
||||
/**
|
||||
* 获取监测点信息
|
||||
* @param id 监测点id
|
||||
*
|
||||
* @param id 监测点id
|
||||
* @return 结果
|
||||
*/
|
||||
LineDetailVO getLineSubGdDetail(@Param("id")String id);
|
||||
LineDetailVO getLineSubGdDetail(@Param("id") String id);
|
||||
|
||||
/**
|
||||
* 获取告警变电站信息
|
||||
* @param list 变电站集合
|
||||
*
|
||||
* @param list 变电站集合
|
||||
* @return 结果
|
||||
*/
|
||||
List<WarningSubstationDTO> getWarningSub(@Param("list") List<String> list);
|
||||
|
||||
/**
|
||||
* 获取监测点信息
|
||||
* @param list 变电站集合
|
||||
*
|
||||
* @param list 变电站集合
|
||||
* @return 结果
|
||||
*/
|
||||
List<OverLimitLineDTO> getOverLimitLineInfo(@Param("list") List<String> list);
|
||||
|
||||
/**
|
||||
* 获取监测点状态信息
|
||||
* @param list 变电站集合
|
||||
*
|
||||
* @param list 变电站集合
|
||||
* @return 结果
|
||||
*/
|
||||
LineStateVO getLineStatisticsDetail(@Param("list") List<String> list);
|
||||
|
||||
/**
|
||||
* 获取监测点信息
|
||||
* @param list 变电站集合
|
||||
*
|
||||
* @param list 变电站集合
|
||||
* @return 结果
|
||||
*/
|
||||
List<LineStatisticsTableVO> getLineInfoByTableList(@Param("list") List<String> list);
|
||||
|
||||
/**
|
||||
* 获取监测点信息
|
||||
* @param list 变电站集合
|
||||
*
|
||||
* @param list 变电站集合
|
||||
* @return 结果
|
||||
*/
|
||||
List<LineFlowMealDetailVO> getFlowLineInfoByTableList(@Param("list") List<String> list);
|
||||
|
||||
/**
|
||||
* 获取监测点信息
|
||||
* @param list 变电站集合
|
||||
*
|
||||
* @param list 变电站集合
|
||||
* @return 结果
|
||||
*/
|
||||
List<LineStatisticsTableVO> getLineStatisticsTableData(@Param("list") List<String> list);
|
||||
|
||||
/**
|
||||
* 监测点运行统计
|
||||
* @param list 监测点集合
|
||||
*
|
||||
* @param list 监测点集合
|
||||
* @param startTime 起始时间
|
||||
* @param endTime 结束时间
|
||||
* @param endTime 结束时间
|
||||
* @return 结果
|
||||
*/
|
||||
List<LineFlowMealDetailVO> getLineRunStatistics(@Param("list") List<String> list, @Param("startTime") DateTime startTime, @Param("endTime")DateTime endTime);
|
||||
List<LineFlowMealDetailVO> getLineRunStatistics(@Param("list") List<String> list, @Param("startTime") DateTime startTime, @Param("endTime") DateTime endTime);
|
||||
|
||||
/**
|
||||
* 监测点运行统计
|
||||
* @param list 监测点集合
|
||||
*
|
||||
* @param list 监测点集合
|
||||
* @param startTime 起始时间
|
||||
* @param endTime 结束时间
|
||||
* @param endTime 结束时间
|
||||
* @return 结果
|
||||
*/
|
||||
List<LineFlowMealDetailVO> getFlowLineRunStatistics(@Param("list") List<String> list, @Param("startTime") DateTime startTime, @Param("endTime")DateTime endTime);
|
||||
List<LineFlowMealDetailVO> getFlowLineRunStatistics(@Param("list") List<String> list, @Param("startTime") DateTime startTime, @Param("endTime") DateTime endTime);
|
||||
|
||||
/**
|
||||
* 获取生成limitRate表的监测点集合
|
||||
*
|
||||
* @return 监测点id集合
|
||||
*/
|
||||
List<String> getLineList();
|
||||
@@ -293,6 +311,7 @@ public interface LineMapper extends BaseMapper<Line> {
|
||||
|
||||
/**
|
||||
* 导出终端台账信息
|
||||
*
|
||||
* @author cdf
|
||||
* @date 2022/5/17
|
||||
*/
|
||||
@@ -300,45 +319,51 @@ public interface LineMapper extends BaseMapper<Line> {
|
||||
|
||||
/**
|
||||
* 根据监测点id获取终端id
|
||||
*
|
||||
* @param lineId 监测点id
|
||||
* @return 结果
|
||||
*/
|
||||
String getDevIndex(@Param("lineId")String lineId);
|
||||
String getDevIndex(@Param("lineId") String lineId);
|
||||
|
||||
/**
|
||||
* 获取变电站下母线
|
||||
*
|
||||
* @param subId 变电站id
|
||||
* @return 结果
|
||||
* @author cdf
|
||||
* @date 2022/7/4
|
||||
* @return 结果
|
||||
*/
|
||||
List<Line> getVoltageListBySubId(@Param("subId")String subId,@Param("voltageName")List<String> voltageName);
|
||||
List<Line> getVoltageListBySubId(@Param("subId") String subId, @Param("voltageName") List<String> voltageName);
|
||||
|
||||
/**
|
||||
* 获取生成在线率的装置Id
|
||||
*
|
||||
* @return 装置Id
|
||||
*/
|
||||
List<String> getDeviceList();
|
||||
|
||||
/**
|
||||
* 获取当前状态在线的监测点数量
|
||||
*
|
||||
* @return Integer 在线监测点数量
|
||||
*/
|
||||
Integer getOnLineCount(@Param("lineIds")List<String> lineIds);
|
||||
Integer getOnLineCount(@Param("lineIds") List<String> lineIds);
|
||||
|
||||
/**
|
||||
* 获取当前状态在线和离线的监测点
|
||||
*
|
||||
* @return 在线或离线监测点ids
|
||||
*/
|
||||
List<String> getOnOrUnLine(@Param("list")List<String> lineIds,@Param("comFlag")Integer comFlag);
|
||||
/**
|
||||
* @Description: 获取变电站id和监测点id用
|
||||
* @Param: [devDataType]
|
||||
* @return: java.util.List<com.njcn.device.pq.pojo.po.Line>
|
||||
* @Author: clam
|
||||
* @Date: 2022/10/20
|
||||
*/
|
||||
@Select ("SELECT\n" +
|
||||
List<String> getOnOrUnLine(@Param("list") List<String> lineIds, @Param("comFlag") Integer comFlag);
|
||||
|
||||
/**
|
||||
* @Description: 获取变电站id和监测点id用
|
||||
* @Param: [devDataType]
|
||||
* @return: java.util.List<com.njcn.device.pq.pojo.po.Line>
|
||||
* @Author: clam
|
||||
* @Date: 2022/10/20
|
||||
*/
|
||||
@Select("SELECT\n" +
|
||||
"\tpq_line.Id,\n" +
|
||||
"\tSUBSTRING_INDEX(\n" +
|
||||
"\t\tSUBSTRING_INDEX(pq_line.Pids, ',', 4),\n" +
|
||||
@@ -357,5 +382,30 @@ public interface LineMapper extends BaseMapper<Line> {
|
||||
"\tpq_device.Dev_Data_Type = 2\n" +
|
||||
"\tOR pq_device.Dev_Data_Type = #{devDataType}\n" +
|
||||
") ")
|
||||
List<Line> getLineBySubstationRelation(@Param("devDataType")Integer devDataType);
|
||||
List<Line> getLineBySubstationRelation(@Param("devDataType") Integer devDataType);
|
||||
|
||||
|
||||
@Select({"<script>",
|
||||
"SELECT\n" +
|
||||
"\tcount(1)\n",
|
||||
"FROM\n",
|
||||
"\t(\n",
|
||||
"\t\tSELECT\n",
|
||||
"\t\t\ta.pid,\n",
|
||||
"\t\t\tmax(b.com_flag) temp\n",
|
||||
"\t\tFROM\n",
|
||||
"\t\t\tpq_line a\n",
|
||||
"\t\tINNER JOIN pq_device b ON a.id = b.id\n",
|
||||
"where a.Pid in",
|
||||
"<foreach item='item' index='index' collection='items' open='(' separator=',' close=')'>",
|
||||
"#{item}",
|
||||
"</foreach>",
|
||||
"\t\tGROUP BY\n",
|
||||
"\t\t\ta.pid\n",
|
||||
"\t) TEMPTABLE\n",
|
||||
"WHERE\n",
|
||||
"\tTEMPTABLE .temp > 0",
|
||||
"</script>"
|
||||
})
|
||||
Integer queryOnlineSubstaion(@Param("items") List<String> deviceIds);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
package com.njcn.device.pq.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.njcn.device.pq.pojo.po.PmsAbnormalRules;
|
||||
|
||||
/**
|
||||
* PmsAbnormalRulesMapper
|
||||
*
|
||||
* @author qijian
|
||||
* @date 2022/10/26
|
||||
*/
|
||||
public interface PmsAbnormalRulesMapper extends BaseMapper<PmsAbnormalRules> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package com.njcn.device.pq.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.njcn.device.pq.pojo.po.RMpIntegrityD;
|
||||
|
||||
/**
|
||||
* RMpIntegrityDMapper
|
||||
*
|
||||
* @author qijian
|
||||
* @date 2022/10/26
|
||||
*/
|
||||
public interface RMpIntegrityDMapper extends BaseMapper<RMpIntegrityD> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package com.njcn.device.pq.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.njcn.device.pq.pojo.po.RStatAbnormalD;
|
||||
|
||||
/**
|
||||
* RStatAbnormalDMapper
|
||||
*
|
||||
* @author qijian
|
||||
* @date 2022/10/26
|
||||
*/
|
||||
public interface RStatAbnormalDMapper extends BaseMapper<RStatAbnormalD> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.njcn.device.pq.service;
|
||||
|
||||
import com.njcn.device.pq.pojo.param.AlgorithmSearchParam;
|
||||
|
||||
/**
|
||||
* 数据是否异常
|
||||
*
|
||||
* @author qijian
|
||||
* @version 1.0.0
|
||||
* @createTime 2022/10/26 - 10:09
|
||||
*/
|
||||
public interface DataExceptionService {
|
||||
|
||||
/**
|
||||
* 监测点数据是否异常
|
||||
* @author qijian
|
||||
* @date 2022/10/26
|
||||
*/
|
||||
boolean lineDataException(AlgorithmSearchParam algorithmSearchParam);
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.njcn.device.pq.service;
|
||||
|
||||
import com.njcn.device.pq.pojo.param.AlgorithmSearchParam;
|
||||
|
||||
/**
|
||||
* 数据完整率算法
|
||||
*
|
||||
* @author qijian
|
||||
* @version 1.0.0
|
||||
* @createTime 2022/10/26 - 10:09
|
||||
*/
|
||||
public interface DataIntegrityRateService {
|
||||
|
||||
/**
|
||||
* 监测点日数据完整率
|
||||
* @author qijian
|
||||
* @date 2022/10/26
|
||||
*/
|
||||
boolean lineDataIntegrityRate(AlgorithmSearchParam algorithmSearchParam);
|
||||
}
|
||||
@@ -0,0 +1,201 @@
|
||||
package com.njcn.device.pq.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.njcn.common.pojo.exception.BusinessException;
|
||||
import com.njcn.device.pq.api.LineFeignClient;
|
||||
import com.njcn.device.pq.pojo.vo.LineDetailDataVO;
|
||||
import com.njcn.device.pq.service.DataExceptionService;
|
||||
import com.njcn.influxdb.config.InfluxDbConfig;
|
||||
import com.njcn.influxdb.param.InfluxDBPublicParam;
|
||||
import com.njcn.influxdb.param.InfluxDBSqlConstant;
|
||||
import com.njcn.influxdb.param.InfluxDBTableConstant;
|
||||
import com.njcn.influxdb.utils.InfluxDbUtils;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.influxdb.dto.QueryResult;
|
||||
import org.influxdb.impl.InfluxDBResultMapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.njcn.device.pq.constant.Param;
|
||||
import com.njcn.device.pq.enums.DeviceResponseEnum;
|
||||
import com.njcn.device.pq.mapper.PmsAbnormalRulesMapper;
|
||||
import com.njcn.device.pq.mapper.RStatAbnormalDMapper;
|
||||
import com.njcn.device.pq.pojo.param.AlgorithmSearchParam;
|
||||
import com.njcn.device.pq.pojo.po.DataV;
|
||||
import com.njcn.device.pq.pojo.po.PmsAbnormalRules;
|
||||
import com.njcn.device.pq.pojo.po.RStatAbnormalD;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* 数据是否异常
|
||||
*
|
||||
* @author qijian
|
||||
* @version 1.0.0
|
||||
* @createTime 2022/10/26 - 10:09
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
public class DataExceptionServiceImpl implements DataExceptionService {
|
||||
|
||||
private final InfluxDbUtils influxDbUtils;
|
||||
|
||||
private final LineFeignClient lineFeignClient;
|
||||
|
||||
private final PmsAbnormalRulesMapper pmsAbnormalRulesMapper;
|
||||
|
||||
private final RStatAbnormalDMapper rStatAbnormalDMapper;
|
||||
|
||||
@Resource
|
||||
private InfluxDbConfig influxDbConfig;
|
||||
|
||||
/**
|
||||
* 监测点数据是否异常
|
||||
* @author qijian
|
||||
* @date 2022/10/26
|
||||
*/
|
||||
@Override
|
||||
public boolean lineDataException(AlgorithmSearchParam algorithmSearchParam) {
|
||||
//测试
|
||||
// InfluxDbUtils influxDBUtil = new InfluxDbUtils("admin", "njcnpqs", "http://192.168.1.18:8086", "pqsbase", "");
|
||||
//初始化
|
||||
InfluxDBResultMapper resultMapper = new InfluxDBResultMapper();
|
||||
String searchSql;
|
||||
String sql;
|
||||
QueryResult query;
|
||||
DataV dataV;
|
||||
Date date = DateUtil.parse(algorithmSearchParam.getDatadate());
|
||||
String lineId = algorithmSearchParam.getId();
|
||||
Integer type = algorithmSearchParam.getType();
|
||||
|
||||
//入库数据初始化
|
||||
RStatAbnormalD rStatAbnormalD = new RStatAbnormalD();
|
||||
rStatAbnormalD.setDataDate(date);
|
||||
rStatAbnormalD.setMeasurementPointId(lineId);
|
||||
rStatAbnormalD.setValueAlarm(0);
|
||||
|
||||
//1、取出规则
|
||||
List<PmsAbnormalRules> pmsAbnormalRules = pmsAbnormalRulesMapper.selectList(null);
|
||||
|
||||
//2、取出电压
|
||||
List<String> lineIds = new ArrayList<>();
|
||||
lineIds.add(lineId);
|
||||
List<LineDetailDataVO> lineDetailList = lineFeignClient.getLineDetailList(lineIds).getData();
|
||||
if (lineDetailList.size() == 0){
|
||||
throw new BusinessException(DeviceResponseEnum.ALGORITHM_LINE_EMPTY);
|
||||
}
|
||||
String scale = lineDetailList.get(0).getScale().replace("kV","");
|
||||
|
||||
//3、根据规则表进行判断
|
||||
//取前四项进行比较(相别为A)
|
||||
searchSql = "MAX(freq) as freq_max,MIN(freq) as freq_min,MAX(rms) as rms_max,MIN(rms) as rms_min,MAX(rms_lvr) as rms_lvr_max,MIN(rms_lvr) as rms_lvr_min,MAX(v_thd) as v_thd_max,MIN(v_thd) as v_thd_min ";
|
||||
sql = getAppend(lineId, date, type, searchSql, "A");
|
||||
query = influxDbUtils.query(sql);
|
||||
dataV = resultMapper.toPOJO(query, DataV.class).get(0);
|
||||
|
||||
//开始判断业务
|
||||
DeviceResponseEnum harmonicResponseEnum = null;
|
||||
for (PmsAbnormalRules pmsAbnormalRule : pmsAbnormalRules) {
|
||||
//每项数据进行上下限比较(MAX和MIN),若有一项不在数据范围内,则为异常
|
||||
switch (pmsAbnormalRule.getTarget()) {
|
||||
case Param.TARGET_FREQ:
|
||||
//频率:正常比较
|
||||
if (dataV.getFrepMIN() < pmsAbnormalRule.getLowerLimit() || dataV.getFrepMAX() > pmsAbnormalRule.getUpperLimit()){
|
||||
harmonicResponseEnum = DeviceResponseEnum.ALGORITHM_FREP_RULE;
|
||||
}
|
||||
break;
|
||||
case Param.TARGET_RMS:
|
||||
//相电压有效值特殊处理:在【0.85p.u.,1.2p.u.】之间;p.u=电压等级/1.732
|
||||
pmsAbnormalRule.setLowerLimit((pmsAbnormalRule.getLowerLimit() * (Double.parseDouble(scale) / 1.732)));
|
||||
pmsAbnormalRule.setUpperLimit((pmsAbnormalRule.getUpperLimit() * (Double.parseDouble(scale) / 1.732)));
|
||||
if (dataV.getRmsMIN() < pmsAbnormalRule.getLowerLimit() || dataV.getRmsMAX() > pmsAbnormalRule.getUpperLimit()){
|
||||
harmonicResponseEnum = DeviceResponseEnum.ALGORITHM_RMS_RULE;
|
||||
}
|
||||
break;
|
||||
case Param.TARGET_RMS_LVR:
|
||||
//线电压有效值特殊处理:在【0.85p.u.,1.2p.u.】之间;p.u=电压等级
|
||||
pmsAbnormalRule.setLowerLimit((pmsAbnormalRule.getLowerLimit() * Double.parseDouble(scale)));
|
||||
pmsAbnormalRule.setUpperLimit((pmsAbnormalRule.getUpperLimit() * Double.parseDouble(scale)));
|
||||
if (dataV.getRmsLvrMIN() < pmsAbnormalRule.getLowerLimit() || dataV.getRmsLvrMAX() > pmsAbnormalRule.getUpperLimit()){
|
||||
harmonicResponseEnum = DeviceResponseEnum.ALGORITHM_RMS_LVR_RULE;
|
||||
}
|
||||
break;
|
||||
case Param.TARGET_V_THD:
|
||||
//电压总谐波畸变率:正常比较
|
||||
if (dataV.getVThdMIN() < pmsAbnormalRule.getLowerLimit() || dataV.getVThdMAX() > pmsAbnormalRule.getUpperLimit()){
|
||||
harmonicResponseEnum = DeviceResponseEnum.ALGORITHM_V_THD_RULE;
|
||||
}
|
||||
break;
|
||||
case Param.TARGET_V_UNBALANCE:
|
||||
//三相不平衡度:正常比较(相别为T)
|
||||
searchSql = "MAX(v_unbalance) as v_unbalance_max,MIN(v_unbalance) as v_unbalance_min ";
|
||||
sql = getAppend(lineId, date,type, searchSql, "T");
|
||||
query = influxDbUtils.query(sql);
|
||||
dataV = resultMapper.toPOJO(query, DataV.class).get(0);
|
||||
if (dataV.getVUnbalanceMIN() < pmsAbnormalRule.getLowerLimit() || dataV.getVUnbalanceMAX() > pmsAbnormalRule.getUpperLimit()){
|
||||
harmonicResponseEnum = DeviceResponseEnum.ALGORITHM_V_UNBALANCE_RULE;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (harmonicResponseEnum != null){
|
||||
//入库
|
||||
LambdaQueryWrapper<RStatAbnormalD> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
lambdaQueryWrapper.eq(RStatAbnormalD::getMeasurementPointId, lineId).eq(RStatAbnormalD::getDataDate, date);
|
||||
RStatAbnormalD rStatAbnormalDOne = rStatAbnormalDMapper.selectOne(lambdaQueryWrapper);
|
||||
if (Objects.isNull(rStatAbnormalDOne)){
|
||||
rStatAbnormalDMapper.insert(rStatAbnormalD);
|
||||
}
|
||||
throw new BusinessException(harmonicResponseEnum);
|
||||
}
|
||||
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 拼装sql
|
||||
* @param id,date,searchSql,tableName 参数
|
||||
* @return 结果
|
||||
*/
|
||||
private String getAppend(String id, Date date, Integer type, String searchSql,String phase) {
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
|
||||
//日期处理
|
||||
DateTime startTime = null;
|
||||
DateTime endTime = null;
|
||||
if (Param.YEAR.equals(type)){
|
||||
startTime = DateUtil.beginOfYear(date);
|
||||
endTime = DateUtil.endOfYear(date);
|
||||
}else if(Param.MONTH.equals(type)){
|
||||
startTime = DateUtil.beginOfMonth(date);
|
||||
endTime = DateUtil.endOfMonth(date);
|
||||
}else if(Param.DAY.equals(type)){
|
||||
startTime = DateUtil.beginOfDay(date);
|
||||
endTime = DateUtil.endOfDay(date);
|
||||
}
|
||||
|
||||
//拼接
|
||||
stringBuilder.append(InfluxDBSqlConstant.SELECT).append(searchSql)
|
||||
.append(InfluxDBSqlConstant.FROM).append(InfluxDBPublicParam.DATA_V)
|
||||
.append(InfluxDBSqlConstant.WHERE).append(InfluxDBPublicParam.TIME).append(InfluxDBSqlConstant.GE).append(InfluxDBSqlConstant.QM).append(startTime).append(InfluxDBSqlConstant.QM)
|
||||
.append(InfluxDBSqlConstant.AND).append(InfluxDBPublicParam.TIME).append(InfluxDBSqlConstant.LE).append(InfluxDBSqlConstant.QM).append(endTime).append(InfluxDBSqlConstant.QM)
|
||||
.append(InfluxDBSqlConstant.AND).append(InfluxDBPublicParam.LINE_ID).append(InfluxDBSqlConstant.EQ).append(InfluxDBSqlConstant.QM).append(id).append(InfluxDBSqlConstant.QM)
|
||||
.append(InfluxDBSqlConstant.AND).append(InfluxDBPublicParam.VALUE_TYPE).append(InfluxDBSqlConstant.EQ).append(InfluxDBSqlConstant.QM).append(InfluxDBTableConstant.AVG).append(InfluxDBSqlConstant.QM);
|
||||
if (InfluxDBTableConstant.PHASE_TYPE_T.equals(phase)){
|
||||
stringBuilder.append(InfluxDBSqlConstant.AND).append(InfluxDBPublicParam.PHASIC_TYPE).append(InfluxDBSqlConstant.EQ).append(InfluxDBSqlConstant.QM).append(InfluxDBTableConstant.PHASE_TYPE_T).append(InfluxDBSqlConstant.QM);
|
||||
}else{
|
||||
stringBuilder.append(InfluxDBSqlConstant.AND).append(InfluxDBPublicParam.PHASIC_TYPE).append(InfluxDBSqlConstant.EQ).append(InfluxDBSqlConstant.QM).append(InfluxDBTableConstant.PHASE_TYPE_A).append(InfluxDBSqlConstant.QM);
|
||||
}
|
||||
return stringBuilder.toString();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,193 @@
|
||||
package com.njcn.device.pq.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.njcn.common.pojo.exception.BusinessException;
|
||||
import com.njcn.device.pq.api.LineFeignClient;
|
||||
import com.njcn.device.pq.mapper.RMpIntegrityDMapper;
|
||||
import com.njcn.device.pq.pojo.vo.LineDetailDataVO;
|
||||
import com.njcn.influxdb.config.InfluxDbConfig;
|
||||
import com.njcn.influxdb.param.InfluxDBPublicParam;
|
||||
import com.njcn.influxdb.param.InfluxDBSqlConstant;
|
||||
import com.njcn.influxdb.param.InfluxDBTableConstant;
|
||||
import com.njcn.influxdb.utils.InfluxDbUtils;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.influxdb.dto.QueryResult;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.njcn.device.pq.enums.DeviceResponseEnum;
|
||||
import com.njcn.device.pq.pojo.param.AlgorithmSearchParam;
|
||||
import com.njcn.device.pq.pojo.po.RMpIntegrityD;
|
||||
import com.njcn.device.pq.service.DataIntegrityRateService;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.text.DecimalFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* 数据完整率算法
|
||||
*
|
||||
* @author qijian
|
||||
* @version 1.0.0
|
||||
* @createTime 2022/10/26 - 10:09
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
public class DataIntegrityRateServiceImpl implements DataIntegrityRateService {
|
||||
|
||||
private final InfluxDbUtils influxDbUtils;
|
||||
|
||||
private final RMpIntegrityDMapper rMpIntegrityDMapper;
|
||||
|
||||
private final LineFeignClient lineFeignClient;
|
||||
|
||||
@Resource
|
||||
private InfluxDbConfig influxDbConfig;
|
||||
|
||||
/**
|
||||
* 监测点日数据完整率
|
||||
* @author qijian
|
||||
* @date 2022/10/26
|
||||
*/
|
||||
@Override
|
||||
public boolean lineDataIntegrityRate(AlgorithmSearchParam algorithmSearchParam) {
|
||||
//测试
|
||||
// InfluxDbUtils influxDBUtil = new InfluxDbUtils("admin", "njcnpqs", "http://192.168.1.18:8086", "pqsbase", "");
|
||||
//初始化
|
||||
String searchSql;
|
||||
String tableName;
|
||||
String sql;
|
||||
QueryResult query;
|
||||
QueryResult.Series series;
|
||||
List<String> columns;
|
||||
List<List<Object>> values;
|
||||
RMpIntegrityD rMpIntegrityD = new RMpIntegrityD();
|
||||
Date date = DateUtil.parse(algorithmSearchParam.getDatadate());
|
||||
|
||||
//1、有效接入分钟数量:根据监测点编号获取统计间隔,1440 / 统计间隔 = 有效接入分钟数量
|
||||
List<String> lineIds = new ArrayList<>();
|
||||
lineIds.add(algorithmSearchParam.getId());
|
||||
List<LineDetailDataVO> lineDetailList = lineFeignClient.getLineDetailList(lineIds).getData();
|
||||
if (lineDetailList.size() == 0){
|
||||
throw new BusinessException(DeviceResponseEnum.ALGORITHM_LINE_EMPTY);
|
||||
}
|
||||
Integer effectiveMinuteCount = 1440 / lineDetailList.get(0).getTimeInterval();
|
||||
rMpIntegrityD.setEffectiveMinuteCount(effectiveMinuteCount);
|
||||
|
||||
//2、根据data_v表获取五项稳态指标日数量(count)
|
||||
searchSql = "count(freq) as freqCount,count(rms) as phaseVoltageCount,count(rms_lvr) as lineVoltageCount,count(v_thd) as vThdCount,count(v_unbalance) as unbalanceCount ";
|
||||
tableName = InfluxDBPublicParam.DATA_V;
|
||||
sql = getAppend(algorithmSearchParam.getId(), date, searchSql, tableName);
|
||||
query = influxDbUtils.query(sql);
|
||||
series = getSeries(query);
|
||||
|
||||
if (Objects.nonNull(series.getColumns())){
|
||||
columns = series.getColumns();
|
||||
values = series.getValues();
|
||||
for (List<Object> columnValue : values) {
|
||||
for (int i = 0; i < columnValue.size(); i++) {
|
||||
if (columns.get(i).equals("freqCount")) {
|
||||
rMpIntegrityD.setFreqCount(Integer.parseInt(convertDoubleToString(columnValue.get(i))));
|
||||
}else if (columns.get(i).equals("phaseVoltageCount")) {
|
||||
rMpIntegrityD.setPhaseVoltageCount(Integer.parseInt(convertDoubleToString(columnValue.get(i))));
|
||||
}else if (columns.get(i).equals("lineVoltageCount")) {
|
||||
rMpIntegrityD.setLineVoltageCount(Integer.parseInt(convertDoubleToString(columnValue.get(i))));
|
||||
}else if (columns.get(i).equals("vThdCount")) {
|
||||
rMpIntegrityD.setVThdCount(Integer.parseInt(convertDoubleToString(columnValue.get(i))));
|
||||
}else if (columns.get(i).equals("unbalanceCount")) {
|
||||
rMpIntegrityD.setUnbalanceCount(Integer.parseInt(convertDoubleToString(columnValue.get(i))));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//3、根据day_flicker表获取两项闪变指标数量(count)
|
||||
searchSql = "count(pst) as pstCount,count(plt) as pltCount ";
|
||||
tableName = InfluxDBPublicParam.DATA_FLICKER;
|
||||
sql = getAppend(algorithmSearchParam.getId(), date, searchSql, tableName);
|
||||
query = influxDbUtils.query(sql);
|
||||
series = getSeries(query);
|
||||
|
||||
if (Objects.nonNull(series.getColumns())){
|
||||
columns = series.getColumns();
|
||||
values = series.getValues();
|
||||
for (List<Object> columnValue : values) {
|
||||
for (int i = 0; i < columnValue.size(); i++) {
|
||||
if (columns.get(i).equals("pstCount")) {
|
||||
rMpIntegrityD.setPstCount(Integer.parseInt(convertDoubleToString(columnValue.get(i))));
|
||||
}else if (columns.get(i).equals("pltCount")) {
|
||||
rMpIntegrityD.setPltCount(Integer.parseInt(convertDoubleToString(columnValue.get(i))));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//4、存库
|
||||
LambdaQueryWrapper<RMpIntegrityD> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
lambdaQueryWrapper.eq(RMpIntegrityD::getMeasurementPointId, algorithmSearchParam.getId()).eq(RMpIntegrityD::getDataDate, date);
|
||||
RMpIntegrityD rMpIntegrityDOne = rMpIntegrityDMapper.selectOne(lambdaQueryWrapper);
|
||||
if (Objects.nonNull(rMpIntegrityDOne)){
|
||||
rMpIntegrityDMapper.update(rMpIntegrityD,lambdaQueryWrapper);
|
||||
}else{
|
||||
rMpIntegrityD.setMeasurementPointId(algorithmSearchParam.getId());
|
||||
rMpIntegrityD.setDataDate(date);
|
||||
rMpIntegrityDMapper.insert(rMpIntegrityD);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Double转String
|
||||
* @param val 参数
|
||||
* @return 结果
|
||||
*/
|
||||
private String convertDoubleToString(Object val) {
|
||||
DecimalFormat decimalFormat = new DecimalFormat("###################.###########");
|
||||
return decimalFormat.format(val);
|
||||
}
|
||||
|
||||
/**
|
||||
* 取series
|
||||
* @param query 参数
|
||||
* @return 结果
|
||||
*/
|
||||
private QueryResult.Series getSeries(QueryResult query) {
|
||||
QueryResult.Series series = new QueryResult.Series();
|
||||
List<QueryResult.Result> results = query.getResults();
|
||||
if (results.size() != 0) {
|
||||
QueryResult.Result result = results.get(0);
|
||||
if (result.getSeries() != null){
|
||||
List<QueryResult.Series> seriess = result.getSeries();
|
||||
if (seriess.size() != 0) {
|
||||
series = seriess.get(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
return series;
|
||||
}
|
||||
|
||||
/**
|
||||
* 拼装sql
|
||||
* @param id,date,searchSql,tableName 参数
|
||||
* @return 结果
|
||||
*/
|
||||
private String getAppend(String id, Date date, String searchSql,String tableName) {
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
stringBuilder.append(InfluxDBSqlConstant.SELECT).append(searchSql)
|
||||
.append(InfluxDBSqlConstant.FROM).append(tableName)
|
||||
.append(InfluxDBSqlConstant.WHERE).append(InfluxDBPublicParam.TIME).append(InfluxDBSqlConstant.GE).append(InfluxDBSqlConstant.QM).append(DateUtil.beginOfDay(date)).append(InfluxDBSqlConstant.QM)
|
||||
.append(InfluxDBSqlConstant.AND).append(InfluxDBPublicParam.TIME).append(InfluxDBSqlConstant.LE).append(InfluxDBSqlConstant.QM).append(DateUtil.endOfDay(date)).append(InfluxDBSqlConstant.QM)
|
||||
.append(InfluxDBSqlConstant.AND).append(InfluxDBPublicParam.LINE_ID).append(InfluxDBSqlConstant.EQ).append(InfluxDBSqlConstant.QM).append(id).append(InfluxDBSqlConstant.QM)
|
||||
.append(InfluxDBSqlConstant.AND).append(InfluxDBPublicParam.PHASIC_TYPE).append(InfluxDBSqlConstant.EQ).append(InfluxDBSqlConstant.QM).append(InfluxDBTableConstant.PHASE_TYPE_A).append(InfluxDBSqlConstant.QM);
|
||||
if (InfluxDBPublicParam.DATA_V.equals(tableName)){
|
||||
stringBuilder.append(InfluxDBSqlConstant.AND).append(InfluxDBPublicParam.VALUE_TYPE).append(InfluxDBSqlConstant.EQ).append(InfluxDBSqlConstant.QM).append(InfluxDBTableConstant.AVG).append(InfluxDBSqlConstant.QM);
|
||||
}
|
||||
return stringBuilder.toString();
|
||||
}
|
||||
}
|
||||
@@ -16,6 +16,9 @@ import com.njcn.device.pq.pojo.param.DeviceInfoParam;
|
||||
import com.njcn.device.pq.pojo.po.DeptLine;
|
||||
import com.njcn.device.pq.pojo.po.Device;
|
||||
import com.njcn.device.pq.pojo.po.Line;
|
||||
import com.njcn.device.pq.pojo.po.Substation;
|
||||
import com.njcn.device.pq.pojo.vo.DeptDeviceDetailVO;
|
||||
import com.njcn.device.pq.pojo.vo.DeptSubstationDetailVO;
|
||||
import com.njcn.device.pq.pojo.vo.ExceptionDeviceInfoVO;
|
||||
import com.njcn.device.pq.service.DeptLineService;
|
||||
import com.njcn.device.pq.service.TerminalBaseService;
|
||||
@@ -32,6 +35,7 @@ import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
@@ -61,7 +65,7 @@ public class GeneralDeviceService {
|
||||
private final RedisUtil redisUtil;
|
||||
|
||||
private final DeviceMapper deviceMapper;
|
||||
|
||||
|
||||
private final LineMapper lineMapper;
|
||||
|
||||
|
||||
@@ -627,4 +631,52 @@ public class GeneralDeviceService {
|
||||
|
||||
return exceptionDeviceInfoVOS;
|
||||
}
|
||||
/**
|
||||
* @Description: getDeptDeviceDetail
|
||||
* @Param: [deviceInfoParam]
|
||||
* @return: com.njcn.device.pq.pojo.vo.DeptDeviceDetailVO
|
||||
* @Author: clam
|
||||
* @Date: 2022/11/4
|
||||
*/
|
||||
public DeptDeviceDetailVO getDeptDeviceDetail(DeviceInfoParam deviceInfoParam) {
|
||||
|
||||
|
||||
DeptDeviceDetailVO deptDeviceDetailVO =new DeptDeviceDetailVO();
|
||||
/*总数*/
|
||||
List<GeneralDeviceDTO> deptDeviceInfos = this.getDeviceInfoAsDept(deviceInfoParam, null, Stream.of(1).collect(Collectors.toList()));
|
||||
List<String> DeviceIds = deptDeviceInfos.stream ( ).map (GeneralDeviceDTO::getDeviceIndexes).flatMap (Collection::stream).collect (Collectors.toList ( ));
|
||||
Integer deviceCount = DeviceIds.size ();
|
||||
|
||||
/*实际运行*/
|
||||
QueryWrapper<Device> query = new QueryWrapper<> ();
|
||||
query.in ("Id",DeviceIds).
|
||||
eq ("Com_Flag",1);
|
||||
Integer runDeviceCount = deviceMapper.selectCount (query);
|
||||
BigDecimal rate = BigDecimal.valueOf (runDeviceCount).divide ( BigDecimal.valueOf (deviceCount),2,BigDecimal.ROUND_HALF_UP);
|
||||
deptDeviceDetailVO.setDeviceCount (deviceCount);
|
||||
deptDeviceDetailVO.setRunDeviceCount (runDeviceCount);
|
||||
deptDeviceDetailVO.setOnLineRate (rate);
|
||||
return deptDeviceDetailVO;
|
||||
|
||||
}
|
||||
|
||||
public DeptSubstationDetailVO getDeptSubstationDetail(DeviceInfoParam deviceInfoParam) {
|
||||
|
||||
DeptSubstationDetailVO deptSubstationDetailVO = new DeptSubstationDetailVO ();
|
||||
|
||||
List<GeneralDeviceDTO> deptDeviceInfos = this.getDeviceInfoAsDept(deviceInfoParam, null, Stream.of(1).collect(Collectors.toList()));
|
||||
|
||||
List<String> DeviceIds = deptDeviceInfos.stream ( ).map (GeneralDeviceDTO::getSubIndexes).flatMap (Collection::stream).collect (Collectors.toList ( ));
|
||||
Integer substationCount = DeviceIds.size ();
|
||||
|
||||
Integer count =lineMapper.queryOnlineSubstaion(DeviceIds);
|
||||
deptSubstationDetailVO.setSubstationCount (substationCount);
|
||||
deptSubstationDetailVO.setRunsubstationCount (count);
|
||||
BigDecimal rate = BigDecimal.valueOf (count).divide ( BigDecimal.valueOf (substationCount),2,BigDecimal.ROUND_HALF_UP);
|
||||
deptSubstationDetailVO.setOnLineRate (rate);
|
||||
|
||||
return deptSubstationDetailVO;
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -119,8 +119,13 @@ public class TerminalTreeServiceImpl implements TerminalTreeService {
|
||||
List<TerminalTree> subList = treeMapper.getSubList(generalDeviceDTO.getSubIndexes());
|
||||
// 通过监测点索引查询监测点信息
|
||||
List<TerminalTree> lineList = treeMapper.getLineList(generalDeviceDTO.getLineIndexes());
|
||||
|
||||
//处理变电站
|
||||
dealChildrenData(subList, lineList, true);
|
||||
|
||||
//监测点前面加序号,后面不需要删除下面两行就行
|
||||
//Integer[] arr = {1};
|
||||
//subList.forEach(item->item.getChildren().forEach(it->it.setName((arr[0]++ +"_"+it.getName()))));
|
||||
//处理供电公司
|
||||
dealChildrenData(gdList, subList, false);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user