1.新增典型源荷指标月统计算法

2.增加国网上送月统计定时任务
This commit is contained in:
wr
2024-03-04 18:20:26 +08:00
parent 745d7e2829
commit 3d622f6da8
14 changed files with 407 additions and 22 deletions

View File

@@ -658,8 +658,18 @@ public class OrgPointExecutor extends BaseExecutor{
}
@LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "pqTypicalSourceCreatePOService", nodeType = NodeTypeEnum.COMMON)
public void pqTypicalSourceCreatePOServiceProcess(NodeComponent bindCmp) {
String tag = bindCmp.getTag();
CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam = bindCmp.getRequestData();
pqTypicalSourceCreatePOService.handlerDay(calculatedParam);
if (tag.equalsIgnoreCase("pq_typical_source_create_d")) {
//日表
pqTypicalSourceCreatePOService.handlerDay(calculatedParam);
} else if (tag.equalsIgnoreCase("pq_typical_source_create_m")) {
//数据补招不执行非日表算法
if (!calculatedParam.isRepair()) {
//月表
pqTypicalSourceCreatePOService.handlerMonth(calculatedParam);
}
}
}
/**
* 河北国网上送接口

View File

@@ -2,6 +2,7 @@ package com.njcn.prepare.harmonic.mapper.mysql.send;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.harmonic.pojo.po.send.PqTypicalSourceCreatePO;
import org.apache.ibatis.annotations.Param;
/**
*
@@ -12,4 +13,8 @@ import com.njcn.harmonic.pojo.po.send.PqTypicalSourceCreatePO;
* @version V1.0.0
*/
public interface PqTypicalSourceCreatePOMapper extends BaseMapper<PqTypicalSourceCreatePO> {
PqTypicalSourceCreatePO selectAvg(@Param("param") PqTypicalSourceCreatePO param,
@Param("startTime")String begin,
@Param("endTime")String end);
}

View File

@@ -0,0 +1,90 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.njcn.prepare.harmonic.mapper.mysql.send.PqTypicalSourceCreatePOMapper">
<select id="selectAvg" resultType="com.njcn.harmonic.pojo.po.send.PqTypicalSourceCreatePO">
select
avg(interferenceSourceNum) as interferenceSourceNum,
avg(averageOvDays) as averageOvDays,
avg(flickerAvgOvRate) as flickerAvgOvRate,
avg(flickerOvNum) as flickerOvNum,
avg(flickerOvRate) as flickerOvRate,
avg(iAvgOvRate) as iAvgOvRate,
avg(iOvNum) as iOvNum,
avg(iOvRate) as iOvRate,
avg(inseqAvgOvRate) as inseqAvgOvRate,
avg(inseqOvNum) as inseqOvNum,
avg(inseqOvRate) as inseqOvRate,
avg(monitorNum) as monitorNum,
avg(monitoringRate) as monitoringRate,
avg(ovNum) as ovNum,
avg(ovRate) as ovRate,
avg(unbanOvNum) as unbanOvNum,
avg(unbanOvRate) as unbanOvRate,
avg(vAvgOvRate) as vAvgOvRate,
avg(vOvNum) as vOvNum,
avg(vOvRate) as vOvRate,
avg(unbanAvgOvRate) as unbanAvgOvRate,
avg(ovDayCount) as ovDayCount,
avg(is_upload_head) as is_upload_head,
avg(monthsCount) as monthsCount,
avg(flickerOvCount) as flickerOvCount,
avg(harmiOvCount) as harmiOvCount,
avg(inseqOvCount) as inseqOvCount,
avg(unbanOvCount) as unbanOvCount,
avg(harmvOvCount) as harmvOvCount,
avg(monitorCount) as monitorCount,
avg(voltageLevel) as voltageLevel,
avg(ovCount) as ovCount,
avg(interferenceSourceCount) as interferenceSourceCount
FROM
pq_typical_source_create
<where>
<if test="param.provinceId != null and param.provinceId != '' ">
AND provinceId = #{param.provinceId}
</if>
<if test="param.cityId != null and param.cityId != '' ">
AND cityId = #{param.cityId}
</if>
<if test="param.countyId != null and param.countyId != '' ">
AND countyId = #{param.countyId}
</if>
<if test="param.provinceId == null ">
AND provinceId IS NULL
</if>
<if test="param.cityId == null">
AND cityId IS NULL
</if>
<if test="param.countyId == null">
AND countyId IS NULL
</if>
<if test="param.statisticalType != null and param.statisticalType != '' ">
AND statisticalType = #{param.statisticalType}
</if>
<if test="param.statisticalLevel != null and param.statisticalLevel != '' ">
AND statisticalLevel = #{param.statisticalLevel}
</if>
<if test="param.indexType != null and param.indexType != '' ">
AND indexType = #{param.indexType}
</if>
<if test="param.industryType != null and param.industryType != '' ">
AND industryType = #{param.industryType}
</if>
<if test="startTime != null and startTime != ''">
AND DATE_FORMAT(statisticalDate, '%Y-%m-%d') &gt;= DATE_FORMAT(#{startTime}, '%Y-%m-%d')
</if>
<if test="endTime != null and endTime != ''">
AND DATE_FORMAT(statisticalDate, '%Y-%m-%d') &lt;= DATE_FORMAT(#{endTime}, '%Y-%m-%d')
</if>
</where>
</select>
</mapper>

View File

@@ -6,15 +6,15 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
/**
*
* Description:
* Date: 2023/12/12 15:16【需求编号】
*
* @author clam
* @version V1.0.0
*/
public interface PqTypicalSourceCreatePOService extends IService<PqTypicalSourceCreatePO>{
public interface PqTypicalSourceCreatePOService extends IService<PqTypicalSourceCreatePO> {
void handlerDay(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
void handlerDay(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
}
void handlerMonth(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
}

View File

@@ -1,7 +1,11 @@
package com.njcn.prepare.harmonic.service.mysql.send.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -31,6 +35,7 @@ import com.njcn.user.api.DeptFeignClient;
import com.njcn.user.pojo.vo.PvTerminalTreeVO;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
@@ -273,6 +278,110 @@ public class PqTypicalSourceCreatePOServiceImpl extends ServiceImpl<PqTypicalSou
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public void handlerMonth(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
List<PqTypicalSourceCreatePO> pqTypicalSourceCreatePOList = new ArrayList<>();
//查询时间范围
String begin = DateUtil.beginOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)).toString();
String end = DateUtil.endOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)).toString();
String date = begin.substring(0, 7);
/*3.45 典型源荷用户类型*/
List<String> collect = Stream.of(DicDataEnum.TRACTIONSTATION.getCode(),
DicDataEnum.WINDFARM_USER.getCode(),
DicDataEnum.PHOTOVOLTAICSIT_EUSERS.getCode(),
DicDataEnum.OTHER_INTERFERENCESOURCE_USERS.getCode()).collect(Collectors.toList());
List<PvTerminalTreeVO> deptList = deptFeignClient.allDeptList().getData();
Map<String, PvTerminalTreeVO> mapCode = deptList.stream().collect(Collectors.toMap(PvTerminalTreeVO::getCode, Function.identity()));
Map<String, PvTerminalTreeVO> mapList = deptList.stream().collect(Collectors.toMap(PvTerminalTreeVO::getId, Function.identity()));
for (DeptGetChildrenMoreDTO deptGetChildrenMoreDTO : calculatedParam.getIdList()) {
collect.stream().forEach(temp->{
PqTypicalSourceCreatePO pqTypicalSourceCreatePO = new PqTypicalSourceCreatePO();
if (temp.equals(DicDataEnum.TRACTIONSTATION.getCode())){
pqTypicalSourceCreatePO.setIndustryType("99");
} else if (temp.equals(DicDataEnum.WINDFARM_USER.getCode())) {
pqTypicalSourceCreatePO.setIndustryType("99");
}else if(temp.equals(DicDataEnum.PHOTOVOLTAICSIT_EUSERS.getCode())) {
pqTypicalSourceCreatePO.setIndustryType("99");
}else if(temp.equals(DicDataEnum.OTHER_INTERFERENCESOURCE_USERS.getCode())) {
pqTypicalSourceCreatePO.setIndustryType("00");
}
if (mapCode.containsKey(deptGetChildrenMoreDTO.getUnitId())) {
PvTerminalTreeVO pvTerminalTreeVO = mapCode.get(deptGetChildrenMoreDTO.getUnitId());
String[] split = (pvTerminalTreeVO.getPids() + StrUtil.COMMA + pvTerminalTreeVO.getId())
.split(StrUtil.COMMA);
if (split.length <3) {
return;
}
for (int i = 2; i < split.length; i++) {
//省
if (i == 2) {
if (mapList.containsKey(split[i])) {
pvTerminalTreeVO = mapList.get(split[i]);
pqTypicalSourceCreatePO.setProvinceName(pvTerminalTreeVO.getName());
pqTypicalSourceCreatePO.setProvinceId(pvTerminalTreeVO.getCode());
pqTypicalSourceCreatePO.setStatisticalLevel("3");
}
}
//市
if (i == 3) {
if (mapList.containsKey(split[i])) {
pvTerminalTreeVO = mapList.get(split[i]);
pqTypicalSourceCreatePO.setCityName(pvTerminalTreeVO.getName());
pqTypicalSourceCreatePO.setCityId(pvTerminalTreeVO.getCode());
pqTypicalSourceCreatePO.setStatisticalLevel("4");
}
}
//县
if (i == 4) {
if (mapList.containsKey(split[i])) {
pvTerminalTreeVO = mapList.get(split[i]);
pqTypicalSourceCreatePO.setCountyName(pvTerminalTreeVO.getName());
pqTypicalSourceCreatePO.setCountyId(pvTerminalTreeVO.getCode());
pqTypicalSourceCreatePO.setStatisticalLevel("5");
}
}
}
}
pqTypicalSourceCreatePO.setIndexType(temp);
pqTypicalSourceCreatePO.setStatisticalDate(date);
pqTypicalSourceCreatePO.setStatisticalType("03");
PqTypicalSourceCreatePO po= this.baseMapper.selectAvg(pqTypicalSourceCreatePO, begin, end);
if(ObjectUtil.isNotNull(po)){
po.setId(deptGetChildrenMoreDTO.getUnitId()+"-"+pqTypicalSourceCreatePO.getIndexType()+"-"+pqTypicalSourceCreatePO.getStatisticalType()+"-"+calculatedParam.getDataDate());
po.setStatisticalType("02");
po.setIndexType(temp);
po.setStatisticalDate(date);
po.setProvinceName(pqTypicalSourceCreatePO.getProvinceName());
po.setProvinceId(pqTypicalSourceCreatePO.getProvinceId());
po.setCityName(pqTypicalSourceCreatePO.getCityName());
po.setCityId(pqTypicalSourceCreatePO.getCityId());
po.setCountyName(pqTypicalSourceCreatePO.getCountyName());
po.setCountyId(pqTypicalSourceCreatePO.getCountyId());
po.setStatisticalLevel(pqTypicalSourceCreatePO.getStatisticalLevel());
po.setIndustryType(pqTypicalSourceCreatePO.getIndustryType());
pqTypicalSourceCreatePOList.add(po);
}
});
}
if(!CollectionUtils.isEmpty(pqTypicalSourceCreatePOList)){
this.saveOrUpdateBatch(pqTypicalSourceCreatePOList);
}
}
private PqTypicalSourceCreatePO initPqTypicalSourceCreatePO(PqTypicalSourceCreatePO pqTypicalSourceCreatePO,
// String code,