1.解决device模块Swagger无法显示bug

2.修改监测点评价,数据异常,指标数据质量算法兼容修改
This commit is contained in:
wr
2023-09-22 16:13:16 +08:00
parent 66322e6c39
commit c686694c74
32 changed files with 502 additions and 268 deletions

View File

@@ -1,8 +1,12 @@
package com.njcn.device.biz.commApi;
import com.njcn.common.pojo.constant.ServerInfo;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.device.biz.commApi.fallback.CommTerminalGeneralClientFallbackFactory;
import com.njcn.device.biz.pojo.dto.LineDTO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
/**
* pqs
@@ -12,11 +16,17 @@ import org.springframework.cloud.openfeign.FeignClient;
*/
@FeignClient(
value = ServerInfo.DEVICE,
path = "CommLineClient",
contextId = "CommLineClient",
path = "commLine",
contextId = "commLine",
fallbackFactory = CommTerminalGeneralClientFallbackFactory.class)
public interface CommLineClient {
/**
* @Description: 获取监测点信息
* @param id
* @Author: wr
* @Date: 2023/9/22 11:11
*/
@GetMapping("/getLineDetail")
HttpResult<LineDTO> getLineDetail(@RequestParam("id") String id);
}

View File

@@ -142,7 +142,6 @@ public interface CommTerminalGeneralClient {
HttpResult<List<LineDevGetDTO>> getMonitorDetailList(@RequestBody List<String> list);
@GetMapping("/lineUnitDetail")
HttpResult<PqsDeviceUnit> lineUnitDetail(@RequestParam("lineId") String lineId);

View File

@@ -3,10 +3,9 @@ package com.njcn.device.biz.commApi.fallback;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.device.biz.commApi.CommLedgerDeptClient;
import com.njcn.device.biz.commApi.CommLineClient;
import com.njcn.device.biz.pojo.dto.LineDTO;
import com.njcn.device.biz.utils.DeviceEnumUtil;
import com.njcn.user.pojo.po.Dept;
import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@@ -30,8 +29,11 @@ public class CommLineClientFallbackFactory implements FallbackFactory<CommLineCl
Enum<?> finalExceptionEnum = exceptionEnum;
return new CommLineClient() {
@Override
public HttpResult<LineDTO> getLineDetail(String id) {
log.error("{}异常,降级处理,异常为:{}", "获取监测点信息", throwable.toString());
throw new BusinessException(finalExceptionEnum);
}
};
}

View File

@@ -0,0 +1,34 @@
package com.njcn.device.biz.pojo.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author wr
* @description
* @date 2023/9/22 10:09
*/
@Data
public class LineDTO {
@ApiModelProperty(name = "lineId",value = "监测点id")
private String lineId;
@ApiModelProperty(name = "devId",value = "终端id")
private String devId;
@ApiModelProperty(name = "timeInterval",value = "测量间隔1-10分钟")
private Integer timeInterval;
@ApiModelProperty(name = "voltageLevel",value = "电压等级")
private String voltageLevel;
@ApiModelProperty(name = "ptType",value = "接线方式")
private String ptType;
@ApiModelProperty(name = "runFlag",value = "终端运行状态")
private String runFlag;
@ApiModelProperty(name = "ptPhaseType",value = "监测点接线相别0单相,1三相默认三相")
private String ptPhaseType;
}

View File

@@ -0,0 +1,46 @@
package com.njcn.device.pms.controller.ledgerManger;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.constant.ServerInfo;
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.biz.commApi.fallback.CommTerminalGeneralClientFallbackFactory;
import com.njcn.device.biz.pojo.dto.LineDTO;
import com.njcn.device.pms.service.majornetwork.IMonitorService;
import com.njcn.web.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* pqs
*
* @author cdf
* @date 2023/9/14
*/
@RestController
@RequestMapping("/commLine")
@RequiredArgsConstructor
@Slf4j
@Api(tags = "通用台账查询")
public class CommLineController extends BaseController {
private final IMonitorService monitorService;
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@GetMapping("/getLineDetail")
@ApiOperation("获取监测点id取监测点信息")
public HttpResult<LineDTO> getLineDetail(@RequestParam("id") String id) {
String methodDescribe = getMethodDescribe("getLineDetail");
LineDTO result = monitorService.getLineDetail(id);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
}

View File

@@ -300,7 +300,7 @@ public class CommTerminalController extends BaseController {
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@GetMapping("/lineUnitDetail")
@ApiOperation("根据监测点id获取数据单位")
@ApiImplicitParam(name = "lineID", value = "实体", required = true)
@ApiImplicitParam(name = "lineId", value = "实体", required = true)
public HttpResult<PqsDeviceUnit> lineUnitDetail(@RequestParam("lineId") String lineId) {
String methodDescribe = getMethodDescribe("lineUnitDetail");
PqsDeviceUnit pqsDeviceUnit = new PqsDeviceUnit();
@@ -316,7 +316,7 @@ public class CommTerminalController extends BaseController {
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@GetMapping("/getMonitorDetail")
@ApiOperation("根据监测点id获取数据单位")
@ApiImplicitParam(name = "lineID", value = "实体", required = true)
@ApiImplicitParam(name = "lineId", value = "实体", required = true)
public HttpResult<LineDevGetDTO> getMonitorDetail(@RequestParam("lineId") String lineId) {
String methodDescribe = getMethodDescribe("getMonitorDetail");
Monitor monitor = monitorService.getById(lineId);

View File

@@ -2,6 +2,7 @@ package com.njcn.device.pms.mapper.majornetwork;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.common.pojo.dto.SimpleDTO;
import com.njcn.device.biz.pojo.dto.LineDTO;
import com.njcn.device.pms.pojo.dto.PmsMonitorBaseDTO;
import com.njcn.device.pms.pojo.dto.PmsMonitorInfoDTO;
import com.njcn.device.pms.pojo.dto.PwPmsMonitorDTO;
@@ -76,10 +77,12 @@ public interface MonitorMapper extends BaseMapper<Monitor> {
*/
MonitorVO getPwMonitorTerminal(@Param("id")String id);
/**
* 获取主网监测点装置信息
* @author cdf
* @date 2023/7/10
* @Description: 根据监测点id获取监测点信息
* @param id
* @return: com.njcn.device.biz.pojo.dto.LineDTO
* @Author: wr
* @Date: 2023/9/22 10:20
*/
LineDTO selectLineDetail(@Param("id")String id);
}

View File

@@ -162,5 +162,19 @@
INNER JOIN pms_terminal pt ON pt.Id = pm.Terminal_Id
where pm.Monitor_Id = #{id}
</select>
<select id="selectLineDetail" resultType="com.njcn.device.biz.pojo.dto.LineDTO">
SELECT
pm.Id as lineId,
pm.Terminal_Id as devId,
pm.Statistical_Interval as timeInterval,
pm.Voltage_Level as voltageLevel,
pm.Monitor_State as runFlag,
pm.Terminal_Wiring_Method as ptType,
pm.PT_Phase_Type as ptPhaseType
FROM
pms_monitor pm
WHERE
pm.id = #{id}
</select>
</mapper>

View File

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.common.pojo.dto.SimpleDTO;
import com.njcn.device.biz.pojo.dto.DeptGetChildrenDTO;
import com.njcn.device.biz.pojo.dto.LineDTO;
import com.njcn.device.biz.pojo.param.DeptGetLineParam;
import com.njcn.device.pms.pojo.dto.PmsMonitorBaseDTO;
import com.njcn.device.pms.pojo.dto.PmsMonitorDTO;
@@ -172,4 +173,11 @@ public interface IMonitorService extends IService<Monitor> {
* @Date: 2023/9/21 13:19
*/
Map<String, List<String>> getLineBySubstationRelation(Integer devDataType);
/**
* 根据监测点id获取监测点信息
* @param id
* @return
*/
LineDTO getLineDetail(String id);
}

View File

@@ -19,6 +19,7 @@ import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.device.biz.enums.DeviceResponseEnum;
import com.njcn.device.biz.pojo.dto.DeptGetChildrenDTO;
import com.njcn.device.biz.pojo.dto.LineDTO;
import com.njcn.device.biz.pojo.param.DeptGetLineParam;
import com.njcn.device.biz.pojo.po.DeviceBak;
import com.njcn.device.biz.utils.COverlimit;
@@ -436,6 +437,21 @@ public class MonitorServiceImpl extends ServiceImpl<MonitorMapper, Monitor> impl
return null;
}
@Override
public LineDTO getLineDetail(String id) {
List<DictData> voltage = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_VOLTAGE.getCode()).getData();
Map<String, String> voltageMap = voltage.stream().collect(Collectors.toMap(DictData::getId, DictData::getValue));
List<DictData> connect = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_CONNECT.getCode()).getData();
Map<String, String> connectMap = connect.stream().collect(Collectors.toMap(DictData::getId, DictData::getValue));
LineDTO lineDTO = this.baseMapper.selectLineDetail(id);
if(voltageMap.containsKey(lineDTO.getVoltageLevel())&&connectMap.containsKey(lineDTO.getPtType())){
lineDTO.setVoltageLevel(voltageMap.get(lineDTO.getVoltageLevel()));
lineDTO.setPtType(connectMap.get(lineDTO.getPtType()));
return lineDTO;
}
return null;
}
/**
* 获取主配网监测点id集合

View File

@@ -0,0 +1,43 @@
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.biz.pojo.dto.LineDTO;
import com.njcn.device.pq.service.LineService;
import com.njcn.web.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* pqs
*
* @author cdf
* @date 2023/9/14
*/
@RestController
@RequestMapping("/commLine")
@RequiredArgsConstructor
@Slf4j
@Api(tags = "通用台账查询")
public class CommLineController extends BaseController {
private final LineService lineService;
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@GetMapping("/getLineDetail")
@ApiOperation("获取监测点id取监测点信息")
public HttpResult<LineDTO> getLineDetail(@RequestParam("id") String id) {
String methodDescribe = getMethodDescribe("getLineDetail");
LineDTO result = lineService.getLineDetail(id);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
}

View File

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.common.pojo.dto.SimpleDTO;
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
import com.njcn.device.biz.pojo.dto.LineDTO;
import com.njcn.device.biz.pojo.dto.LineDevGetDTO;
import com.njcn.device.biz.pojo.po.Overlimit;
import com.njcn.device.pq.pojo.advanced.UpDevVO;
@@ -513,4 +514,13 @@ public interface LineMapper extends BaseMapper<Line> {
* @Date: 2023/8/29 12:50
*/
Page<HalfReportVO> selectHalfReport(Page page,@Param("param") TerminalMainQueryParam param);
/**
* @Description: 根据监测点id获取监测点信息
* @param id
* @return: com.njcn.device.biz.pojo.dto.LineDTO
* @Author: wr
* @Date: 2023/9/22 10:20
*/
LineDTO selectLineDetail(@Param("id") String id);
}

View File

@@ -1340,5 +1340,29 @@
devName,
lineName
</select>
<select id="selectLineDetail" resultType="com.njcn.device.biz.pojo.dto.LineDTO">
SELECT
line.id AS lineId,
dev.id AS devId,
detail.Time_Interval AS timeInterval,
vg.Scale AS voltageLevel,
pqd.Run_Flag as runFlag,
detail.PT_Type AS ptType,
detail.PT_Phase_Type AS ptPhaseType
FROM
pq_line line,
pq_line_detail detail,
pq_line vo,
pq_voltage vg,
pq_line dev,
pq_device pqd
WHERE
line.id = detail.id
AND vo.id = line.pid
AND dev.id = vo.pid
AND vo.id = vg.id
AND pqd.id = dev.id
AND line.id = #{id}
</select>
</mapper>

View File

@@ -1,6 +1,7 @@
package com.njcn.device.pq.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.device.biz.pojo.dto.LineDTO;
import com.njcn.device.pq.pojo.dto.PollutionLineDTO;
import com.njcn.device.pq.pojo.dto.PollutionParamDTO;
import com.njcn.device.pq.pojo.dto.PollutionSubstationDTO;
@@ -181,4 +182,13 @@ public interface LineService {
List<TopMsgPO> dailyDeviceAbnormal(DeviceInfoParam.BusinessParam conditionBusinessParam);
Page<HalfReportVO> halfReport(TerminalMainQueryParam param);
/**
* @Description: 根据监测点获取监测点信息
* @param id
* @return: com.njcn.device.biz.pojo.dto.LineDTO
* @Author: wr
* @Date: 2023/9/22 10:46
*/
LineDTO getLineDetail(String id);
}

View File

@@ -16,6 +16,7 @@ import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.common.utils.EnumUtils;
import com.njcn.common.utils.PubUtils;
import com.njcn.device.biz.enums.DeviceResponseEnum;
import com.njcn.device.biz.pojo.dto.LineDTO;
import com.njcn.device.biz.pojo.po.Overlimit;
import com.njcn.device.pq.enums.LineBaseEnum;
import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO;
@@ -35,6 +36,8 @@ import com.njcn.influx.pojo.po.PqsCommunicate;
import com.njcn.influx.query.InfluxQueryWrapper;
import com.njcn.system.api.AreaFeignClient;
import com.njcn.system.api.DicDataFeignClient;
import com.njcn.system.enums.DicDataTypeEnum;
import com.njcn.system.pojo.po.DictData;
import com.njcn.web.pojo.vo.LineDataVO;
import com.njcn.web.utils.GeneralUtil;
import com.njcn.web.utils.RequestUtil;
@@ -469,6 +472,18 @@ public class LineServiceImpl extends ServiceImpl<LineMapper, Line> implements Li
return this.baseMapper.selectHalfReport(page,param);
}
@Override
public LineDTO getLineDetail(String id) {
List<DictData> data = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_VOLTAGE_STAND.getCode()).getData();
Map<String, String> dicMap = data.stream().collect(Collectors.toMap(DictData::getId, DictData::getValue));
LineDTO lineDTO = this.baseMapper.selectLineDetail(id);
if(dicMap.containsKey(lineDTO.getVoltageLevel())){
lineDTO.setVoltageLevel(dicMap.get(lineDTO.getVoltageLevel()));
return lineDTO;
}
return null;
}
@Override
public List<Overlimit> getOverLimitByList(PollutionParamDTO pollutionParamDTO) {
return overlimitMapper.selectBatchIds(pollutionParamDTO.getLineList());

View File

@@ -32,6 +32,7 @@ public class RMpMonitorEvaluateJob {
lineParam.setType(Integer.valueOf(BizParamConstant.STAT_BIZ_DAY));
lineParam.setDataDate(CommonExecutorUtils.prepareTimeDeal(BizParamConstant.STAT_BIZ_DAY));
lineParam.setDataSource(2);
CommonExecutorUtils.commDefineDate(BizParamConstant.STAT_BIZ_DAY,lineParam);
rMpMonitorEvaluateFeignClient.handlerMonitorEvaluate(lineParam);
}

View File

@@ -33,6 +33,7 @@ public class ROperatingMonitorJob {
lineParam.setType(Integer.valueOf(BizParamConstant.STAT_BIZ_DAY));
lineParam.setDataDate(CommonExecutorUtils.prepareTimeDeal(BizParamConstant.STAT_BIZ_DAY));
lineParam.setDataSource(2);
CommonExecutorUtils.commDefineDate(BizParamConstant.STAT_BIZ_DAY,lineParam);
rOperatingMonitorFeignClient.handlerMonitorOperatingD(lineParam);
}
@@ -43,6 +44,7 @@ public class ROperatingMonitorJob {
lineParam.setType(Integer.valueOf(BizParamConstant.STAT_BIZ_MONTH));
lineParam.setDataDate(CommonExecutorUtils.prepareTimeDeal(BizParamConstant.STAT_BIZ_MONTH));
lineParam.setDataSource(2);
CommonExecutorUtils.commDefineDate(BizParamConstant.STAT_BIZ_MONTH,lineParam);
rOperatingMonitorFeignClient.handlerMonitorOperatingM(lineParam);
}

View File

@@ -33,6 +33,7 @@ public class RStatAbnormalJob {
lineParam.setType(Integer.valueOf(BizParamConstant.STAT_BIZ_DAY));
lineParam.setDataDate(CommonExecutorUtils.prepareTimeDeal(BizParamConstant.STAT_BIZ_DAY));
lineParam.setDataSource(2);
CommonExecutorUtils.commDefineDate(BizParamConstant.STAT_BIZ_DAY,lineParam);
rStatAbnormalFeignClient.handlerMonitorAbnormal(lineParam);
}

View File

@@ -23,9 +23,6 @@ import java.util.Date;
@Data
@TableName(value = "r_mp_monitor_evaluate_d")
public class RMpMonitorEvaluateDPO {
@MppMultiId(value = "data_date")
@ApiModelProperty(value="")
private Date dataDate;
/**
* 监测点Id
@@ -33,6 +30,9 @@ public class RMpMonitorEvaluateDPO {
@MppMultiId(value = "measurement_point_id")
private String measurementPointId;
@MppMultiId(value = "data_date")
private Date dataDate;
@TableField(value = "device_id")
private String deviceId;

View File

@@ -5,6 +5,8 @@ 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.common.utils.NjcnDateUtils;
import com.njcn.device.biz.commApi.CommTerminalGeneralClient;
import com.njcn.device.pq.api.LineFeignClient;
import com.njcn.prepare.harmonic.pojo.param.LineParam;
import com.njcn.prepare.harmonic.service.mysql.line.RStatAbnormalDService;
@@ -38,7 +40,7 @@ import java.util.List;
@Api(tags = "监测点异常_日统计")
@AllArgsConstructor
public class RMStatAbnormalDController extends BaseController {
private final LineFeignClient lineFeignClient;
private final CommTerminalGeneralClient commTerminalGeneralClient;
private final RStatAbnormalDService rStatAbnormalDService;
@@ -47,17 +49,23 @@ public class RMStatAbnormalDController extends BaseController {
@PostMapping("handlerMonitorAbnormal")
@OperateInfo(info = LogEnum.BUSINESS_MEDIUM)
public HttpResult<Boolean> handlerMonitorAbnormal(@RequestBody LineParam jobParam ){
log.info(LocalDateTime.now()+"handlerMonitorAbnormal开始执行");
String methodDescribe = getMethodDescribe("handlerMonitorAbnormal");
List<String> indexLists = new ArrayList<> ();
List<String> indexLists;
if (CollectionUtils.isEmpty(jobParam.getLineIds())) {
indexLists = lineFeignClient.getLineList ( ).getData ( );
indexLists = commTerminalGeneralClient.getRunMonitorIds().getData();
} else {
indexLists = jobParam.getLineIds();
}
rStatAbnormalDService.handlerMonitorAbnormal (indexLists,jobParam.getDataDate ());
if (jobParam.getRepairFlag()){
List<String> timeRange = NjcnDateUtils.findEveryDay(jobParam.getBeginTime(),jobParam.getEndTime());
for (String item : timeRange) {
log.info(item+"-->开始执行");
rStatAbnormalDService.handlerMonitorAbnormal(indexLists,item);
}
} else {
rStatAbnormalDService.handlerMonitorAbnormal (indexLists,jobParam.getBeginTime());
}
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe);
}
}

View File

@@ -5,7 +5,8 @@ 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.api.LineFeignClient;
import com.njcn.common.utils.NjcnDateUtils;
import com.njcn.device.biz.commApi.CommTerminalGeneralClient;
import com.njcn.prepare.harmonic.pojo.param.LineParam;
import com.njcn.prepare.harmonic.service.mysql.line.RMpMonitorEvaluateDService;
import com.njcn.web.controller.BaseController;
@@ -21,7 +22,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
/**
@@ -38,7 +38,8 @@ import java.util.List;
@Api(tags = "监测点评价_日统计")
@AllArgsConstructor
public class RMpMonitorEvaluateDController extends BaseController {
private final LineFeignClient lineFeignClient;
private final CommTerminalGeneralClient commTerminalGeneralClient;
private final RMpMonitorEvaluateDService rMpMonitorEvaluateDService;
@@ -47,17 +48,26 @@ public class RMpMonitorEvaluateDController extends BaseController {
@PostMapping("handlerMonitorEvaluate")
@OperateInfo(info = LogEnum.BUSINESS_MEDIUM)
public HttpResult<Boolean> handlerMonitorEvaluate(@RequestBody LineParam jobParam) {
log.info(LocalDateTime.now() + "handlerMonitorEvaluate开始执行");
String methodDescribe = getMethodDescribe("handlerMonitorEvaluate");
List<String> indexLists = new ArrayList<> ();
String startTime,endTime;
List<String> indexLists;
if (CollectionUtils.isEmpty(jobParam.getLineIds())) {
indexLists = lineFeignClient.getLineList ( ).getData ( );
indexLists = commTerminalGeneralClient.getRunMonitorIds().getData();
} else {
indexLists = jobParam.getLineIds();
}
rMpMonitorEvaluateDService.dayDataJobHandler (indexLists,jobParam.getDataDate ());
if (jobParam.getRepairFlag()){
List<String> timeRange = NjcnDateUtils.findEveryDay(jobParam.getBeginTime(),jobParam.getEndTime());
for (String item : timeRange) {
log.info(item+"-->开始执行");
startTime = item+" "+"00:00:00";
endTime = item+" "+"23:59:59";
rMpMonitorEvaluateDService.dayDataJobHandler(indexLists,startTime, endTime);
}
} else {
rMpMonitorEvaluateDService.dayDataJobHandler(indexLists, jobParam.getBeginTime(), jobParam.getEndTime());
}
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe);
}
}

View File

@@ -5,7 +5,8 @@ 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.api.LineFeignClient;
import com.njcn.common.utils.NjcnDateUtils;
import com.njcn.device.biz.commApi.CommTerminalGeneralClient;
import com.njcn.prepare.harmonic.pojo.param.LineParam;
import com.njcn.prepare.harmonic.service.mysql.line.ROperatingMonitorMService;
import com.njcn.prepare.harmonic.service.mysql.line.ROperatingMonitorService;
@@ -22,7 +23,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
/**
@@ -39,8 +39,7 @@ import java.util.List;
@Api(tags = "监测点数据质量")
@AllArgsConstructor
public class ROperatingMonitorController extends BaseController {
private final LineFeignClient lineFeignClient;
private final CommTerminalGeneralClient commTerminalGeneralClient;
private final ROperatingMonitorService rOperatingMonitorService;
private final ROperatingMonitorMService rOperatingMonitorMService;
@@ -49,17 +48,23 @@ public class ROperatingMonitorController extends BaseController {
@PostMapping("handlerMonitorOperatingD")
@OperateInfo(info = LogEnum.BUSINESS_MEDIUM)
public HttpResult<Boolean> handlerMonitorOperatingD(@RequestBody LineParam jobParam) {
log.info(LocalDateTime.now() + "handlerMonitorOperatingD开始执行");
String methodDescribe = getMethodDescribe("handlerMonitorOperatingD");
List<String> indexLists = new ArrayList<> ();
List<String> indexLists;
if (CollectionUtils.isEmpty(jobParam.getLineIds())) {
indexLists = lineFeignClient.getLineList ( ).getData ( );
indexLists = commTerminalGeneralClient.getRunMonitorIds().getData();
} else {
indexLists = jobParam.getLineIds();
}
if (jobParam.getRepairFlag()) {
List<String> timeRange = NjcnDateUtils.findEveryDay(jobParam.getBeginTime(), jobParam.getEndTime());
for (String item : timeRange) {
log.info(item + "-->开始执行");
rOperatingMonitorService.handlerMonitorOperatingD(indexLists, item);
}
} else {
rOperatingMonitorService.handlerMonitorOperatingD(indexLists, jobParam.getDataDate());
}
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe);
}
@@ -71,14 +76,13 @@ public class ROperatingMonitorController extends BaseController {
log.info(LocalDateTime.now() + "handlerMonitorOperatingM开始执行");
String methodDescribe = getMethodDescribe("handlerMonitorOperatingM");
List<String> indexLists = new ArrayList<> ();
List<String> indexLists;
if (CollectionUtils.isEmpty(jobParam.getLineIds())) {
indexLists = lineFeignClient.getLineList ( ).getData ( );
indexLists = commTerminalGeneralClient.getRunMonitorIds().getData();
} else {
indexLists = jobParam.getLineIds();
}
rOperatingMonitorMService.handlerMonitorOperatingM (indexLists,jobParam.getDataDate ());
rOperatingMonitorMService.handlerMonitorOperatingM(indexLists,jobParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe);
}
}

View File

@@ -30,6 +30,6 @@ public interface DataVInfluxdbService
* @Author: clam
* @Date: 2023/2/23
*/
List<DataVFiveItemDTO> getFiveItems(String lineId, String date, Integer statisticalInterval);
List<DataVFiveItemDTO> getFiveItems(String lineId, String beginTime, String endTime, Integer statisticalInterval);
}

View File

@@ -72,20 +72,18 @@ public class DataVInfluxdbServiceImpl implements DataVInfluxdbService {
* @Date: 2023/2/23
*/
@Override
public List<DataVFiveItemDTO> getFiveItems(String lineId, String date, Integer statisticalInterval) {
public List<DataVFiveItemDTO> getFiveItems(String lineId,String beginTime, String endTime, Integer statisticalInterval) {
/*按时间分组每组16条*/
/*freq,v_thd,v_unbalance 取T项数据*/
String startTime = date+" "+"00:00:00";
String endTime = date+" "+"23:59:59";
String Sql = "SELECT time, MAX(freq) as freq_max,MIN(freq) as freq_min,MAX(v_thd) as v_thd_max,MIN(v_thd) as v_thd_min,MAX(v_unbalance) as v_unbalance_max,MIN(v_unbalance) as v_unbalance_min from data_v where line_id='"+lineId+
"'and "+ InfluxDBPublicParam.TIME+">='"+startTime+"'and "+ InfluxDBPublicParam.TIME+"<='"+endTime+"' and phasic_type ='T' and value_type='AVG' group by time("+statisticalInterval+"m ) fill(none) "+InfluxDBPublicParam.TIME_ZONE;
"'and "+ InfluxDBPublicParam.TIME+">='"+beginTime+"'and "+ InfluxDBPublicParam.TIME+"<='"+endTime+"' and phasic_type ='T' and value_type='AVG' group by time("+statisticalInterval+"m ) fill(none) "+InfluxDBPublicParam.TIME_ZONE;
QueryResult query = influxDbUtils.query(Sql);
InfluxDBResultMapper resultMapper = new InfluxDBResultMapper();
List<DataV> dataVS = resultMapper.toPOJO(query, DataV.class);
/*rms,rms_lvr 取ABC项数据任意一个数据*/
String Sql2 = "SELECT time, MAX(rms) as rms_max,MIN(rms) as rms_min,MAX(rms_lvr) as rms_lvr_max,MIN(rms_lvr) as rms_lvr_min from data_v where line_id='"+lineId+
"'and "+ InfluxDBPublicParam.TIME+">='"+startTime+"'and "+ InfluxDBPublicParam.TIME+"<='"+endTime+"' and phasic_type ='A' and value_type='AVG' group by time("+statisticalInterval+"m ) fill(none) "+InfluxDBPublicParam.TIME_ZONE;
"'and "+ InfluxDBPublicParam.TIME+">='"+beginTime+"'and "+ InfluxDBPublicParam.TIME+"<='"+endTime+"' and phasic_type ='A' and value_type='AVG' group by time("+statisticalInterval+"m ) fill(none) "+InfluxDBPublicParam.TIME_ZONE;
QueryResult query2 = influxDbUtils.query(Sql2);
InfluxDBResultMapper resultMapper2 = new InfluxDBResultMapper();
List<DataV> dataVS2 = resultMapper2.toPOJO(query2, DataV.class);

View File

@@ -151,7 +151,7 @@ public class EffectiveMinuteCountServiceImpl implements EffectiveMinuteCountServ
/*统计间隔*/
Integer statisticalInterval = temp.getStatisticalInterval ( );
/*获取监测点当天的所有数据*/
List<DataVFiveItemDTO> fiveItems = dataVInfluxdbService.getFiveItems (temp.getId (), dataDate,statisticalInterval);
List<DataVFiveItemDTO> fiveItems = dataVInfluxdbService.getFiveItems (temp.getId (), dataDate+" "+"00:00:00",dataDate+" "+"23:59:59",statisticalInterval);
/*过滤出有效接入分钟数量*/
Integer count = calculateEffectiveMinute (fiveItems, pmsAbnormalRules, voltage);

View File

@@ -1,11 +1,13 @@
package com.njcn.prepare.harmonic.service.mysql.Impl.line;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.device.pq.api.LineFeignClient;
import com.njcn.device.biz.commApi.CommLineClient;
import com.njcn.device.biz.pojo.dto.LineDTO;
import com.njcn.device.pq.constant.Param;
import com.njcn.device.pq.pojo.po.PmsAbnormalRules;
import com.njcn.device.pq.pojo.vo.LineDetailDataVO;
import com.njcn.prepare.harmonic.mapper.mysql.line.PmsAbnormalRulesMapper;
import com.njcn.prepare.harmonic.mapper.mysql.line.RMpMonitorEvaluateDMapper;
import com.njcn.prepare.harmonic.pojo.dto.DataVFiveItemDTO;
@@ -14,9 +16,6 @@ import com.njcn.prepare.harmonic.pojo.po.DataFlicker;
import com.njcn.prepare.harmonic.service.influxdb.DataIntegrityRateInfluxService;
import com.njcn.prepare.harmonic.service.influxdb.DataVInfluxdbService;
import com.njcn.prepare.harmonic.service.mysql.line.RMpMonitorEvaluateDService;
import com.njcn.system.api.DicDataFeignClient;
import com.njcn.system.enums.DicDataTypeEnum;
import com.njcn.system.pojo.po.DictData;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import org.springframework.scheduling.annotation.Async;
@@ -42,8 +41,7 @@ import java.util.stream.Collectors;
@RequiredArgsConstructor
public class RMpMonitorEvaluateDServiceImpl extends MppServiceImpl<RMpMonitorEvaluateDMapper, RMpMonitorEvaluateDPO> implements RMpMonitorEvaluateDService {
private final LineFeignClient lineFeignClient;
private final DicDataFeignClient dicDataFeignClient;
private final CommLineClient commLineClient;
private final DataVInfluxdbService dataVInfluxdbService;
private final PmsAbnormalRulesMapper pmsAbnormalRulesMapper;
private final DataIntegrityRateInfluxService dataIntegrityRateInfluxService;
@@ -52,33 +50,25 @@ public class RMpMonitorEvaluateDServiceImpl extends MppServiceImpl<RMpMonitorEva
@Transactional(rollbackFor = {Exception.class})
@Async("asyncExecutor")
@SneakyThrows
public void dayDataJobHandler(List<String> indexLists, String dataDate) {
public void dayDataJobHandler(List<String> indexLists, String beginTime, String endTime) {
//1、取出规则
List<PmsAbnormalRules> pmsAbnormalRules = pmsAbnormalRulesMapper.selectList(null);
List<DictData> dictDataList = dicDataFeignClient.getDicDataByTypeName (DicDataTypeEnum.DEV_VOLTAGE.getName ( )).getData ( );
List<RMpMonitorEvaluateDPO> rMpMonitorEvaluateDPOS = new ArrayList<>();
indexLists.forEach(temp -> {
LineDetailDataVO data = lineFeignClient.getLineDetailData (temp).getData ( );
String devid = lineFeignClient.getLineIdByDevId(temp).getData();
LineDTO data = commLineClient.getLineDetail(temp).getData();
if (ObjectUtil.isNotNull(data)) {
/*todo 统计间隔电压等级取值方式后期提供融合版本接口获取不然pmspqs系统取值方式不一样*/
/*统计间隔*/
Integer statisticalInterval = data.getTimeInterval();
/*电压等级*/
// Double voltage = PublicUtil.getVoltage (temp, dictDataList);
Double voltage =Double.parseDouble (data.getScale ().substring (0, data.getScale ().length ()-2));
Double voltage = Double.parseDouble(data.getVoltageLevel());
List<DataVFiveItemDTO> fiveItems = dataVInfluxdbService.getFiveItems (temp, dataDate, statisticalInterval);
List<DataVFiveItemDTO> fiveItems = dataVInfluxdbService.getFiveItems(temp, beginTime,endTime, statisticalInterval);
RMpMonitorEvaluateDPO rMpMonitorEvaluateDPO = new RMpMonitorEvaluateDPO();
rMpMonitorEvaluateDPO = calculateRMpMonitorEvaluateDPO(rMpMonitorEvaluateDPO, fiveItems, pmsAbnormalRules, voltage, data);
Date date = DateUtil.parse(dataDate);
Date date = DateUtil.parse(beginTime);
DataFlicker twoFlickerData = dataIntegrityRateInfluxService.getTwoFlickerData(temp, date, 5);
@@ -90,15 +80,17 @@ public class RMpMonitorEvaluateDServiceImpl extends MppServiceImpl<RMpMonitorEva
rMpMonitorEvaluateDPO.setPstCount(twoFlickerData.getPstCount());
}
rMpMonitorEvaluateDPO.setAllMinuteCount(fiveItems.size());
rMpMonitorEvaluateDPO.setDeviceId(devid);
rMpMonitorEvaluateDPO.setDeviceId(data.getDevId());
rMpMonitorEvaluateDPO.setDataDate(date);
rMpMonitorEvaluateDPO.setMeasurementPointId(temp);
rMpMonitorEvaluateDPOS.add(rMpMonitorEvaluateDPO);
}
});
if (CollUtil.isNotEmpty(rMpMonitorEvaluateDPOS)) {
this.saveOrUpdateBatchByMultiId(rMpMonitorEvaluateDPOS, 500);
}
}
/**
@@ -112,7 +104,7 @@ public class RMpMonitorEvaluateDServiceImpl extends MppServiceImpl<RMpMonitorEva
* @Author: clam
* @Date: 2023/2/23
*/
private RMpMonitorEvaluateDPO calculateRMpMonitorEvaluateDPO(RMpMonitorEvaluateDPO rMpMonitorEvaluateDPO,List<DataVFiveItemDTO> fiveItems, List<PmsAbnormalRules> pmsAbnormalRules, Double voltage,LineDetailDataVO data) {
private RMpMonitorEvaluateDPO calculateRMpMonitorEvaluateDPO(RMpMonitorEvaluateDPO rMpMonitorEvaluateDPO, List<DataVFiveItemDTO> fiveItems, List<PmsAbnormalRules> pmsAbnormalRules, Double voltage, LineDTO data) {
Integer freqCount = 0;
Integer unbalanceCount = 0;

View File

@@ -2,9 +2,8 @@ package com.njcn.prepare.harmonic.service.mysql.Impl.line;
import cn.hutool.core.date.DateUtil;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.common.utils.PubUtils;
import com.njcn.device.pq.api.LineFeignClient;
import com.njcn.device.pq.pojo.vo.LineDetailDataVO;
import com.njcn.device.biz.commApi.CommLineClient;
import com.njcn.device.biz.pojo.dto.LineDTO;
import com.njcn.prepare.harmonic.mapper.mysql.line.ROperatingMonitorDMapper;
import com.njcn.prepare.harmonic.pojo.mysql.RMpMonitorEvaluateDPO;
import com.njcn.prepare.harmonic.pojo.mysql.ROperatingMonitorDPO;
@@ -38,7 +37,7 @@ public class ROperatingMonitorDServiceImpl extends MppServiceImpl<ROperatingMoni
private final RMpMonitorEvaluateDService rMpMonitorEvaluateDService;
private final RStatAbnormalDService rStatAbnormalDService;
private final LineFeignClient lineFeignClient;
private final CommLineClient commLineClient;
/**
* @Description: 采用以下公式计算数据完整率:
@@ -66,11 +65,11 @@ public class ROperatingMonitorDServiceImpl extends MppServiceImpl<ROperatingMoni
indexLists.forEach (temp -> {
ROperatingMonitorDPO rOperatingMonitorDPO = new ROperatingMonitorDPO();
LineDetailDataVO data = lineFeignClient.getLineDetailData (temp).getData ( );
LineDTO data = commLineClient.getLineDetail(temp).getData();
/*todo 统计间隔,电压等级取值方式,devid后期提供融合版本接口获取不然pmspqs系统取值方式不一样*/
/*统计间隔*/
Integer statisticalInterval = data.getTimeInterval ();
String devid = lineFeignClient.getLineIdByDevId(temp).getData();
RMpMonitorEvaluateDPO rMpMonitorEvaluateDPO = new RMpMonitorEvaluateDPO();
rMpMonitorEvaluateDPO.setMeasurementPointId (temp);
@@ -108,8 +107,8 @@ public class ROperatingMonitorDServiceImpl extends MppServiceImpl<ROperatingMoni
rMpMonitorEvaluateDPO.getVThdCount ())*statisticalInterval/(5*1440)
)
);
rOperatingMonitorDPO.setDevId (devid);
rOperatingMonitorDPO.setMonitorState (PubUtils.getRunFlag(data.getRunFlag())+"");
rOperatingMonitorDPO.setDevId (data.getDevId());
rOperatingMonitorDPO.setMonitorState("0");
rOperatingMonitorDPOList.add (rOperatingMonitorDPO);
});
this.saveOrUpdateBatchByMultiId (rOperatingMonitorDPOList,500);

View File

@@ -7,6 +7,7 @@ import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.prepare.harmonic.mapper.mysql.line.ROperatingMonitorMMapper;
import com.njcn.prepare.harmonic.pojo.mysql.ROperatingMonitorDPO;
import com.njcn.prepare.harmonic.pojo.mysql.ROperatingMonitorMPO;
import com.njcn.prepare.harmonic.pojo.param.LineParam;
import com.njcn.prepare.harmonic.service.mysql.line.ROperatingMonitorMService;
import com.njcn.prepare.harmonic.service.mysql.line.ROperatingMonitorService;
import lombok.RequiredArgsConstructor;
@@ -37,38 +38,25 @@ public class ROperatingMonitorMServiceImpl extends MppServiceImpl<ROperatingMoni
@Override
@Transactional(rollbackFor = {Exception.class})
@Async("asyncExecutor")
public void handlerMonitorOperatingM(List<String> indexLists, String dataDate) {
Date date = DateUtil.parse (dataDate);
public void handlerMonitorOperatingM(List<String> indexLists,LineParam jobParam) {
List<ROperatingMonitorMPO> rOperatingMonitorMPOList = new ArrayList<>();
QueryWrapper<ROperatingMonitorDPO> queryWrapper = new QueryWrapper<>();
indexLists.forEach(temp -> {
queryWrapper.clear();
queryWrapper.eq ("measurement_point_id", temp).
eq ("DATE_FORMAT( data_date ,'%Y-%m')", dataDate.substring (0, 7));
queryWrapper.eq("measurement_point_id", temp)
.ge("data_date", jobParam.getBeginTime())
.le("data_date", jobParam.getEndTime());
List<ROperatingMonitorDPO> list = rOperatingMonitorService.list(queryWrapper);
if (CollectionUtils.isEmpty(list)) {
return;
}
ROperatingMonitorMPO rOperatingMonitorMPO = new ROperatingMonitorMPO();
BigDecimal dataIntegrityRate = BigDecimal.valueOf (
list.stream ( ).
mapToDouble (po -> po.getDataIntegrityRate ( ).doubleValue ( ))
.average ( ).getAsDouble ( )
);
BigDecimal dataRightRate = BigDecimal.valueOf (
list.stream ( ).
mapToDouble (po -> po.getDataRightRate ( ).doubleValue ( ))
.average ( ).getAsDouble ( )
);
BigDecimal indexIntegrityRate = BigDecimal.valueOf (
list.stream ( ).
mapToDouble (po -> po.getIndexIntegrityRate ( ).doubleValue ( ))
.average ( ).getAsDouble ( )
);
BigDecimal dataIntegrityRate = BigDecimal.valueOf(list.stream().mapToDouble(po -> po.getDataIntegrityRate().doubleValue()).average().getAsDouble());
BigDecimal dataRightRate = BigDecimal.valueOf(list.stream().mapToDouble(po -> po.getDataRightRate().doubleValue()).average().getAsDouble());
BigDecimal indexIntegrityRate = BigDecimal.valueOf(list.stream().mapToDouble(po -> po.getIndexIntegrityRate().doubleValue()).average().getAsDouble());
rOperatingMonitorMPO.setMeasurementPointId(temp);
rOperatingMonitorMPO.setDataDate (date);
rOperatingMonitorMPO.setDataDate(DateUtil.parse(jobParam.getDataDate()));
rOperatingMonitorMPO.setDataIntegrityRate(dataIntegrityRate);
rOperatingMonitorMPO.setDataRightRate(dataRightRate);
rOperatingMonitorMPO.setIndexIntegrityRate(indexIntegrityRate);

View File

@@ -6,7 +6,6 @@ import com.njcn.prepare.harmonic.pojo.mysql.RMpMonitorEvaluateDPO;
import java.util.List;
/**
*
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2023/4/19 15:42【需求编号】
@@ -23,5 +22,5 @@ public interface RMpMonitorEvaluateDService extends IMppService<RMpMonitorEvalua
* @Author: clam
* @Date: 2023/4/19
*/
void dayDataJobHandler(List<String> indexLists, String dataDate);
void dayDataJobHandler(List<String> indexLists, String beginTime, String endTime);
}

View File

@@ -2,11 +2,11 @@ package com.njcn.prepare.harmonic.service.mysql.line;
import com.github.jeffreyning.mybatisplus.service.IMppService;
import com.njcn.prepare.harmonic.pojo.mysql.ROperatingMonitorMPO;
import com.njcn.prepare.harmonic.pojo.param.LineParam;
import java.util.List;
/**
*
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2023/4/21 15:41【需求编号】
@@ -23,5 +23,5 @@ public interface ROperatingMonitorMService extends IMppService<ROperatingMonitor
* @Author: clam
* @Date: 2023/4/21
*/
void handlerMonitorOperatingM(List<String> indexLists, String dataDate);
void handlerMonitorOperatingM(List<String> indexLists, LineParam jobParam);
}

View File

@@ -6,7 +6,6 @@ import com.njcn.prepare.harmonic.pojo.mysql.ROperatingMonitorDPO;
import java.util.List;
/**
*
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2023/4/21 10:17【需求编号】

View File

@@ -6,7 +6,6 @@ import com.njcn.prepare.harmonic.pojo.mysql.RStatAbnormalDPO;
import java.util.List;
/**
*
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2023/4/21 9:07【需求编号】