1.定时任务重试代码提交

2.pmsbug修改
This commit is contained in:
wr
2024-01-09 15:57:55 +08:00
parent 7f7d7cf058
commit ab1abd8259
27 changed files with 211 additions and 204 deletions

View File

@@ -34,13 +34,13 @@ public class GwMonitorPushClientFallbackFactory implements FallbackFactory<GwMon
@Override
public HttpResult<String> timeTaskPushMonitor(List<String> ids) {
log.error("{}异常,降级处理,异常为:{}", LocalDate.now()+"定时推送主网监测点", throwable.toString());
throw new BusinessException(finalExceptionEnum);
return new HttpResult<>(CommonResponseEnum.FAIL.getCode(),CommonResponseEnum.FAIL.getMessage());
}
@Override
public HttpResult<Object> pushMonitorOverLimit(List<String> ids) {
log.error("{}异常,降级处理,异常为:{}", LocalDate.now()+"定时推送主网监测点限值", throwable.toString());
throw new BusinessException(finalExceptionEnum);
return new HttpResult<>(CommonResponseEnum.FAIL.getCode(),CommonResponseEnum.FAIL.getMessage());
}

View File

@@ -35,7 +35,7 @@ public class MonitorSendClientFallbackFactory implements FallbackFactory<Monitor
@Override
public HttpResult<String> windSend(MonitorParam.Info param) {
log.error("{}异常,降级处理,异常为:{}", "国网五类台账上送接口", throwable.toString());
throw new BusinessException(finalExceptionEnum);
return new HttpResult<>(CommonResponseEnum.FAIL.getCode(),CommonResponseEnum.FAIL.getMessage());
}
};
}

View File

@@ -20,123 +20,45 @@
FROM
(
SELECT
b.Monitor_Sort,
b.Created_Date
FROM
(
( SELECT id, Operation_Id, Power_Station_Id, Line_Id FROM pms_power_client
<where>
org_id IN
<foreach collection="orgIds" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
AND STATUS = 1
</where>
) UNION ALL
( SELECT id, Operation_Id, Power_Station_Id, Line_Id FROM pms_power_generation_user
<where>
org_id IN
<foreach collection="orgIds" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
AND STATUS = 1
</where>
) UNION ALL
( SELECT id, Operation_Id, Power_Station_Id, Line_Id FROM pms_power_distributionarea
<where>
org_id IN
<foreach collection="orgIds" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
AND STATUS = 1
</where>
) UNION ALL
( SELECT id, Operation_Id, Powerr_Id, Line_Id FROM pms_monitor
<where>
org_id IN
<foreach collection="orgIds" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
AND STATUS = 1
</where>
)
) t
INNER JOIN pms_distribution_monitor b ON t.id = b.Monitor_Id
)t
GROUP BY t.Monitor_Sort,yy,mm
SELECT
b.Monitor_Sort,
b.Created_Date
FROM
pms_distribution_monitor b
<where>
org_id IN
<foreach collection="orgIds" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
AND STATUS = 1
</where>
)t
GROUP BY t.Monitor_Sort,yy,mm
) ta
-- 同比:上年同月
LEFT JOIN (
SELECT
t.Monitor_Sort,
year(t.Created_Date) as yy,
month(t.Created_Date) as mm,
COUNT(*) as num
FROM (
SELECT
b.Monitor_Sort,
b.Created_Date
SELECT
t.Monitor_Sort,
year(t.Created_Date) as yy,
month(t.Created_Date) as mm,
COUNT(*) as num
FROM
(
( SELECT id, Operation_Id, Power_Station_Id, Line_Id FROM pms_power_client
<where>
org_id IN
<foreach collection="orgIds" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
AND STATUS = 1
</where>
) UNION ALL
( SELECT id, Operation_Id, Power_Station_Id, Line_Id FROM pms_power_generation_user
<where>
org_id IN
<foreach collection="orgIds" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
AND STATUS = 1
</where>
) UNION ALL
( SELECT id, Operation_Id, Power_Station_Id, Line_Id FROM pms_power_distributionarea
<where>
org_id IN
<foreach collection="orgIds" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
AND STATUS = 1
</where>
) UNION ALL
( SELECT id, Operation_Id, Powerr_Id, Line_Id FROM pms_monitor
<where>
org_id IN
<foreach collection="orgIds" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
AND STATUS = 1
</where>
)
) t
INNER JOIN pms_distribution_monitor b ON t.id = b.Monitor_Id
SELECT
b.Monitor_Sort,
b.Created_Date
FROM
pms_distribution_monitor b
<where>
org_id IN
<foreach collection="orgIds" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
AND STATUS = 1
</where>
)t
GROUP BY t.Monitor_Sort,yy,mm
) tb
GROUP BY t.Monitor_Sort,yy,mm
) tb
ON tb.mm = ta.mm and tb.yy = ta.yy-1 and tb.Monitor_Sort = ta.Monitor_Sort
-- 环比:上月
@@ -146,66 +68,26 @@
year(t.Created_Date) as yy,
month(t.Created_Date) as mm,
COUNT(*) as num
FROM (
SELECT
b.Monitor_Sort,
b.Created_Date
FROM
(
( SELECT id, Operation_Id, Power_Station_Id, Line_Id FROM pms_power_client
<where>
org_id IN
<foreach collection="orgIds" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
AND STATUS = 1
</where>
) UNION ALL
( SELECT id, Operation_Id, Power_Station_Id, Line_Id FROM pms_power_generation_user
<where>
org_id IN
<foreach collection="orgIds" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
AND STATUS = 1
</where>
) UNION ALL
( SELECT id, Operation_Id, Power_Station_Id, Line_Id FROM pms_power_distributionarea
<where>
org_id IN
<foreach collection="orgIds" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
AND STATUS = 1
</where>
) UNION ALL
( SELECT id, Operation_Id, Powerr_Id, Line_Id FROM pms_monitor
<where>
org_id IN
<foreach collection="orgIds" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
AND STATUS = 1
</where>
)
) t
INNER JOIN pms_distribution_monitor b ON t.id = b.Monitor_Id
)t
GROUP BY t.Monitor_Sort,yy,mm
) tc
ON ( (tc.yy = ta.yy and tc.mm = ta.mm - 1 and tc.Monitor_Sort = ta.Monitor_Sort)
OR
(tc.yy=ta.yy - 1 AND tc.mm = 12 AND ta.mm = 1 and tc.Monitor_Sort = ta.Monitor_Sort)
)
SELECT
b.Monitor_Sort,
b.Created_Date
FROM
pms_distribution_monitor b
<where>
org_id IN
<foreach collection="orgIds" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
AND STATUS = 1
</where>
)t
GROUP BY t.Monitor_Sort,yy,mm
) tc
ON ( (tc.yy = ta.yy and tc.mm = ta.mm - 1 and tc.Monitor_Sort = ta.Monitor_Sort)
OR
(tc.yy=ta.yy - 1 AND tc.mm = 12 AND ta.mm = 1 and tc.Monitor_Sort = ta.Monitor_Sort)
)
<where>
<if test="param.year != null and param.year!=''">

View File

@@ -1,6 +1,7 @@
package com.njcn.device.pms.service.majornetwork.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.NumberUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.common.pojo.dto.SimpleDTO;
@@ -113,15 +114,15 @@ public class RMpDevEvaluateDetailServiceImpl extends ServiceImpl<RMpDevEvaluateD
//终端有效接入率
double devEffectiveRate = list.stream().filter(item -> terminalMap.get(item.getDeviceId()).getOrgId().equals(key))
.mapToDouble(RMpDevEvaluateDetail::getDevEffectiveRate).average().orElse(0);
rMpDevEvaluateDetailVO.setDevEffectiveRate(devEffectiveRate);
rMpDevEvaluateDetailVO.setDevEffectiveRate(NumberUtil.round(devEffectiveRate,2).doubleValue());
//终端指标完整率
double devTargetRate = list.stream().filter(item -> terminalMap.get(item.getDeviceId()).getOrgId().equals(key))
.mapToDouble(RMpDevEvaluateDetail::getDevTargetRate).average().orElse(0);
rMpDevEvaluateDetailVO.setDevTargetRate(devTargetRate);
rMpDevEvaluateDetailVO.setDevTargetRate(NumberUtil.round(devTargetRate,2).doubleValue());
//终端数据完整率
double devDataRate = list.stream().filter(item -> terminalMap.get(item.getDeviceId()).getOrgId().equals(key))
.mapToDouble(RMpDevEvaluateDetail::getDevDataRate).average().orElse(0);
rMpDevEvaluateDetailVO.setDevDataRate(devDataRate);
rMpDevEvaluateDetailVO.setDevDataRate(NumberUtil.round(devDataRate,2).doubleValue());
//综合评价
rMpDevEvaluateDetailVO.setAssessment(Double.parseDouble(df.format((devEffectiveRate + devTargetRate + devDataRate) / 3.0)));
@@ -187,15 +188,15 @@ public class RMpDevEvaluateDetailServiceImpl extends ServiceImpl<RMpDevEvaluateD
//终端有效接入率
double devEffectiveRate = list.stream().filter(item -> terminalMap.get(item.getDeviceId()).getManufacture().equals(key))
.mapToDouble(RMpDevEvaluateDetail::getDevEffectiveRate).average().orElse(0);
rMpDevEvaluateDetailVO.setDevEffectiveRate(devEffectiveRate);
rMpDevEvaluateDetailVO.setDevEffectiveRate(NumberUtil.round(devEffectiveRate,2).doubleValue());
//终端指标完整率
double devTargetRate = list.stream().filter(item -> terminalMap.get(item.getDeviceId()).getManufacture().equals(key))
.mapToDouble(RMpDevEvaluateDetail::getDevTargetRate).average().orElse(0);
rMpDevEvaluateDetailVO.setDevTargetRate(devTargetRate);
rMpDevEvaluateDetailVO.setDevTargetRate(NumberUtil.round(devTargetRate,2).doubleValue());
//终端数据完整率
double devDataRate = list.stream().filter(item -> terminalMap.get(item.getDeviceId()).getManufacture().equals(key))
.mapToDouble(RMpDevEvaluateDetail::getDevDataRate).average().orElse(0);
rMpDevEvaluateDetailVO.setDevDataRate(devDataRate);
rMpDevEvaluateDetailVO.setDevDataRate(NumberUtil.round(devDataRate,2).doubleValue());
//综合评价
rMpDevEvaluateDetailVO.setAssessment(Double.parseDouble(df.format((devEffectiveRate + devTargetRate + devDataRate) / 3.0)));
@@ -256,15 +257,15 @@ public class RMpDevEvaluateDetailServiceImpl extends ServiceImpl<RMpDevEvaluateD
//终端有效接入率
double devEffectiveRate = list.stream().filter(item -> terminalMap.get(item.getDeviceId()).getDeviceModel().equals(key))
.mapToDouble(RMpDevEvaluateDetail::getDevEffectiveRate).average().orElse(0);
rMpDevEvaluateDetailVO.setDevEffectiveRate(devEffectiveRate);
rMpDevEvaluateDetailVO.setDevEffectiveRate(NumberUtil.round(devEffectiveRate,2).doubleValue());
//终端指标完整率
double devTargetRate = list.stream().filter(item -> terminalMap.get(item.getDeviceId()).getDeviceModel().equals(key))
.mapToDouble(RMpDevEvaluateDetail::getDevTargetRate).average().orElse(0);
rMpDevEvaluateDetailVO.setDevTargetRate(devTargetRate);
rMpDevEvaluateDetailVO.setDevTargetRate(NumberUtil.round(devTargetRate,2).doubleValue());
//终端数据完整率
double devDataRate = list.stream().filter(item -> terminalMap.get(item.getDeviceId()).getDeviceModel().equals(key))
.mapToDouble(RMpDevEvaluateDetail::getDevDataRate).average().orElse(0);
rMpDevEvaluateDetailVO.setDevDataRate(devDataRate);
rMpDevEvaluateDetailVO.setDevDataRate(NumberUtil.round(devDataRate,2).doubleValue());
//综合评价
rMpDevEvaluateDetailVO.setAssessment(Double.parseDouble(df.format((devEffectiveRate + devTargetRate + devDataRate) / 3.0)));

View File

@@ -1,15 +1,20 @@
package com.njcn.device.pq.api;
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.response.HttpResult;
import com.njcn.device.pq.api.fallback.DeviceTreeClientFallbackFactory;
import com.njcn.device.pq.api.fallback.LineIntegrityClientFallbackFactory;
import com.njcn.device.pq.pojo.param.LineBaseQueryParam;
import com.njcn.device.pq.pojo.po.RStatIntegrityD;
import com.njcn.device.pq.pojo.vo.AlarmStrategyVO;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import springfox.documentation.annotations.ApiIgnore;
import java.util.List;
@@ -31,4 +36,14 @@ public interface LineIntegrityClient {
*/
@PostMapping("/getIntegrityByLineIds")
HttpResult<List<RStatIntegrityD>> getIntegrityByLineIds(@RequestBody List<String> lineIds, @RequestParam("startTime")String startTime, @RequestParam("endTime")String endTime);
/**
* @Description: 通过监测点集合查询总监测点数据完整性
* @param param
* @return: com.njcn.common.pojo.response.HttpResult<java.lang.Float>
* @Author: wr
* @Date: 2024/1/8 14:06
*/
@PostMapping("/getTotalIntegrityByLineIds")
HttpResult<Float> getTotalIntegrityByLineIds(@RequestBody LineBaseQueryParam param);
}

View File

@@ -6,6 +6,7 @@ import com.njcn.common.pojo.response.HttpResult;
import com.njcn.device.biz.utils.DeviceEnumUtil;
import com.njcn.device.pq.api.AlarmClient;
import com.njcn.device.pq.api.LineIntegrityClient;
import com.njcn.device.pq.pojo.param.LineBaseQueryParam;
import com.njcn.device.pq.pojo.po.RStatIntegrityD;
import com.njcn.device.pq.pojo.vo.AlarmStrategyVO;
import feign.hystrix.FallbackFactory;
@@ -39,6 +40,12 @@ public class LineIntegrityClientFallbackFactory implements FallbackFactory<LineI
throw new BusinessException(finalExceptionEnum);
}
@Override
public HttpResult<Float> getTotalIntegrityByLineIds(LineBaseQueryParam param) {
log.error("{}异常,降级处理,异常为:{}", "通过监测点集合查询总监测点数据完整性", throwable.toString());
throw new BusinessException(finalExceptionEnum);
}
};
}
}

View File

@@ -9,6 +9,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.pq.pojo.param.DeviceInfoParam;
import com.njcn.device.pq.pojo.param.LineBaseQueryParam;
import com.njcn.device.pq.pojo.param.LineIntegrityDataParam;
import com.njcn.device.pq.pojo.po.RStatIntegrityD;
import com.njcn.device.pq.pojo.vo.LineIntegrityDataVO;
@@ -101,4 +102,18 @@ public class LineIntegrityDataController extends BaseController {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS,integrityDataOfLine,methodDescribe);
}
/**
* @Description: 通过监测点集合查询总监测点数据完整性
* @param param
* @Author: wr
* @Date: 2024/1/8 13:58
*/
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/getTotalIntegrityByLineIds")
@ApiOperation("通过监测点集合查询总监测点数据完整性")
public HttpResult<Float> getTotalIntegrityByLineIds(@RequestBody LineBaseQueryParam param) {
String methodDescribe = getMethodDescribe("getTotalIntegrityByLineIds");
Float integrity = irStatIntegrityDService.getTotalIntegrityByLineIds(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, integrity, methodDescribe);
}
}

View File

@@ -39,4 +39,13 @@ public interface RStatIntegrityDMapper extends BaseMapper<RStatIntegrityD> {
List<RStatIntegrityVO> getOnIntegrityByIds(@Param("param") OnlineRateParam param);
List<RStatIntegrityVO> getOnIntegrityByIdsAndTime (@Param("list")List<String> lineIds,@Param("startTime")String startTime,@Param("endTime")String endTime);
/**
* @Description: 通过监测点集合查询总监测点数据完整性
* @param param
* @return: java.lang.Float
* @Author: wr
* @Date: 2024/1/8 14:01
*/
Float selectTotalIntegrityByLineIds(@Param("param") LineBaseQueryParam param);
}

View File

@@ -63,4 +63,24 @@
</where>
group by line_index ;
</select>
<select id="selectTotalIntegrityByLineIds" resultType="java.lang.Float">
select
ROUND( sum(real_time)/sum(due_time)*100,2) as integrityRate
from
r_stat_integrity_d
<where>
<if test="param!=null and param.lineIds != null and param.ids.lineIds > 0">
AND line_index IN
<foreach collection='param.lineIds' item='item' index="index" open='(' separator=',' close=')'>
#{item}
</foreach>
</if>
<if test=" param.startTime != null and param.startTime !=''">
AND time_id >= #{param.startTime}
</if>
<if test="param.endTime != null and param.endTime != ''">
AND time_id &lt;= #{param.endTime}
</if>
</where>
</select>
</mapper>

View File

@@ -2,6 +2,7 @@ package com.njcn.device.pq.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.device.pq.pojo.param.LineBaseQueryParam;
import com.njcn.device.pq.pojo.po.RStatIntegrityD;
/**
@@ -14,6 +15,11 @@ import com.njcn.device.pq.pojo.po.RStatIntegrityD;
*/
public interface IRStatIntegrityDService extends IService<RStatIntegrityD> {
/**
* @Description: 通过监测点集合查询总监测点数据完整性
* @param param
* @Author: wr
* @Date: 2024/1/8 13:59
*/
Float getTotalIntegrityByLineIds(LineBaseQueryParam param);
}

View File

@@ -3,6 +3,7 @@ package com.njcn.device.pq.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.device.pq.mapper.RStatIntegrityDMapper;
import com.njcn.device.pq.pojo.param.LineBaseQueryParam;
import com.njcn.device.pq.pojo.po.RStatIntegrityD;
import com.njcn.device.pq.service.IRStatIntegrityDService;
import org.springframework.stereotype.Service;
@@ -18,4 +19,8 @@ import org.springframework.stereotype.Service;
@Service
public class RStatIntegrityDServiceImpl extends ServiceImpl<RStatIntegrityDMapper, RStatIntegrityD> implements IRStatIntegrityDService {
@Override
public Float getTotalIntegrityByLineIds(LineBaseQueryParam param) {
return this.baseMapper.selectTotalIntegrityByLineIds(param);
}
}