1.变电站上送逻辑修改
2.添加pms配网用户侧数据完整性接口 3.添加pms配网用户侧指标越限接口
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package com.njcn.device.pms.pojo.param;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import io.swagger.models.auth.In;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
@@ -49,6 +50,9 @@ public class DistributionMonitorParam {
|
||||
@ApiModelProperty(value = "监测终端接线方式(字典)")
|
||||
private String terminalWiringMethod;
|
||||
|
||||
@ApiModelProperty(value = "统计间隔分钟")
|
||||
private Integer statisticalInterval;
|
||||
|
||||
|
||||
/**
|
||||
* pt变比
|
||||
|
||||
@@ -199,7 +199,6 @@ public class PowerClientParam {
|
||||
* 用户标签
|
||||
*/
|
||||
@ApiModelProperty(value = "用户标签",required = true)
|
||||
@NotBlank(message = "用户标签不可为空")
|
||||
private String userTag;
|
||||
|
||||
/**
|
||||
|
||||
@@ -5,6 +5,7 @@ import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@@ -17,5 +18,8 @@ public class PwUserMonitorParam extends BaseParam {
|
||||
|
||||
private Double limitValue;
|
||||
|
||||
private Integer comFlag;
|
||||
|
||||
private List<String> ids;
|
||||
|
||||
}
|
||||
|
||||
@@ -2,21 +2,47 @@ package com.njcn.device.pms.pojo.vo.pwUser;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Data
|
||||
public class PwUserMonitorDataVO {
|
||||
|
||||
private String id;
|
||||
|
||||
/**
|
||||
* 监测点名称
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 所属组织
|
||||
*/
|
||||
private String orgName;
|
||||
|
||||
private String operationName;
|
||||
|
||||
/**
|
||||
* 是否敏感用户
|
||||
*/
|
||||
private Integer ifSensitiveUser;
|
||||
|
||||
/**
|
||||
* 用户类型
|
||||
*/
|
||||
private String userType;
|
||||
|
||||
/**
|
||||
* 电压等级
|
||||
*/
|
||||
private String voltageLevel;
|
||||
|
||||
/**
|
||||
* 数据完整性
|
||||
*/
|
||||
private Float integrityRate;
|
||||
|
||||
private LocalDateTime localDateTime;
|
||||
|
||||
private Integer comFlag;
|
||||
|
||||
}
|
||||
|
||||
@@ -47,4 +47,18 @@ public class PwUserMonitorDataController extends BaseController {
|
||||
Page<PwUserMonitorDataVO> page = pwUserMonitorDataService.pageIntegrityData(pwUserMonitorParam);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS,page,methodDescribe);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取配网用户装置在线率
|
||||
*/
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("getPwDeviceOnline")
|
||||
@ApiOperation("获取配网用户侧监测点数据完整性")
|
||||
@ApiImplicitParam(name = "pwUserMonitorParam",value = "请求头",required = true)
|
||||
public HttpResult<Page<PwUserMonitorDataVO>> getPwDeviceOnline(@RequestBody @Validated PwUserMonitorParam pwUserMonitorParam){
|
||||
String methodDescribe = getMethodDescribe("getPwDeviceOnline");
|
||||
Page<PwUserMonitorDataVO> page = pwUserMonitorDataService.getPwDeviceOnline(pwUserMonitorParam);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS,page,methodDescribe);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ import com.njcn.device.pms.pojo.dto.PmsSimpleDTO;
|
||||
import com.njcn.device.pms.pojo.dto.PwPmsMonitorDTO;
|
||||
import com.njcn.device.pms.pojo.param.PmsDeviceInfoParam;
|
||||
import com.njcn.device.pms.pojo.param.TaiZhangParam;
|
||||
import com.njcn.device.pms.pojo.param.pwUser.PwUserMonitorParam;
|
||||
import com.njcn.device.pms.pojo.po.DistributionMonitor;
|
||||
import com.njcn.device.pms.pojo.po.Monitor;
|
||||
import com.njcn.device.pms.pojo.po.PowerDistributionarea;
|
||||
@@ -126,5 +127,12 @@ public interface DistributionMonitorMapper extends MppBaseMapper<DistributionMon
|
||||
Boolean insertPmsDistributionArea(@Param("dic") String dic);
|
||||
|
||||
|
||||
List<PwUserMonitorDataVO> getDistributionPage(@Param("ew")QueryWrapper<PwUserMonitorDataVO> ew);
|
||||
/**
|
||||
* pms临时处理方式,后续物联平台接口修改开放后修改
|
||||
* @param deptIds
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
//TODO pms临时处理方式,后续物联平台接口修改开放后修改
|
||||
List<PwUserMonitorDataVO> getDistributionList(@Param("deptIds")List<String> deptIds,@Param("param") PwUserMonitorParam param);
|
||||
}
|
||||
|
||||
@@ -508,15 +508,28 @@
|
||||
</select>
|
||||
|
||||
|
||||
<select id="getDistributionPage" resultType="com.njcn.device.pms.pojo.vo.pwUser.PwUserMonitorDataVO">
|
||||
<select id="getDistributionList" resultType="com.njcn.device.pms.pojo.vo.pwUser.PwUserMonitorDataVO">
|
||||
select * from (
|
||||
SELECT
|
||||
pms_power_client.id,pms_power_client.name,pms_power_client.Org_Name,pms_power_client.Operation_Name,
|
||||
pms_power_client.If_Sensitive_User,pms_power_client.User_Type
|
||||
pms_power_client.If_Sensitive_User,pms_power_client.User_Type,pms_power_client.Voltage_Level,
|
||||
IF(pms_real_data.time_Id IS NULL, 0, IF(TIMESTAMPDIFF(MINUTE, pms_real_data.time_Id, NOW()) > 30, 0, 1)) AS comFlag,
|
||||
pms_real_data.time_Id updateTime
|
||||
FROM
|
||||
pms_distribution_monitor,
|
||||
pms_power_client
|
||||
WHERE pms_distribution_monitor.Monitor_Id = pms_power_client.id
|
||||
and ${ew.sqlSegment}
|
||||
pms_distribution_monitor
|
||||
inner join pms_power_client on pms_distribution_monitor.Monitor_Id = pms_power_client.id
|
||||
left join pms_real_data on pms_power_client.id = pms_real_data.line_id and pms_real_data.value_type = "AVG"
|
||||
WHERE pms_power_client.org_id in
|
||||
<foreach collection="deptIds" item="item" open="(" close=")" separator=",">
|
||||
#{item}
|
||||
</foreach>
|
||||
<if test="param.userName!=null and param.userName!=''">
|
||||
and pms_power_client.name like CONCAT('%', #{param.userName}, '%')
|
||||
</if>
|
||||
) t where 1 = 1
|
||||
<if test="param.comFlag!=null">
|
||||
and comFlag = #{param.comFlag}
|
||||
</if>
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
|
||||
@@ -14,4 +14,7 @@ public interface PwUserMonitorDataService {
|
||||
*/
|
||||
Page<PwUserMonitorDataVO> pageIntegrityData(PwUserMonitorParam pwUserMonitorParam);
|
||||
|
||||
Page<PwUserMonitorDataVO> getPwDeviceOnline(PwUserMonitorParam pwUserMonitorParam);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -76,6 +76,11 @@ public class PwUserMonitorDataServiceImpl implements PwUserMonitorDataService {
|
||||
return pageResult;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<PwUserMonitorDataVO> getPwDeviceOnline(PwUserMonitorParam pwUserMonitorParam) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 超标情况
|
||||
|
||||
@@ -158,10 +158,11 @@ public class DistributionMonitorServiceImpl extends MppServiceImpl<DistributionM
|
||||
distributionMonitor.setCt2(distributionMonitorParam.getCt2());
|
||||
distributionMonitor.setPt1(distributionMonitorParam.getPt1());
|
||||
distributionMonitor.setPt2(distributionMonitorParam.getPt2());
|
||||
distributionMonitor.setStatisticalInterval(distributionMonitorParam.getStatisticalInterval());
|
||||
this.save(distributionMonitor);
|
||||
|
||||
//只有二三类需要填写限值,一类默认新建主网监测点时候已经新建限值
|
||||
overLimitAdd(distributionMonitor.getVoltageLevel(), distributionMonitor.getMonitorId());
|
||||
overLimitAdd(distributionMonitor.getVoltageLevel(), distributionMonitor.getMonitorId(),false);
|
||||
break;
|
||||
case DicDataConstant.THREE_LINE:
|
||||
//三类监测点
|
||||
@@ -198,8 +199,9 @@ public class DistributionMonitorServiceImpl extends MppServiceImpl<DistributionM
|
||||
distributionMonitor.setCt2(distributionMonitorParam.getCt2());
|
||||
distributionMonitor.setPt1(distributionMonitorParam.getPt1());
|
||||
distributionMonitor.setPt2(distributionMonitorParam.getPt2());
|
||||
distributionMonitor.setStatisticalInterval(distributionMonitorParam.getStatisticalInterval());
|
||||
this.save(distributionMonitor);
|
||||
overLimitAdd(distributionMonitor.getVoltageLevel(), distributionMonitor.getMonitorId());
|
||||
overLimitAdd(distributionMonitor.getVoltageLevel(), distributionMonitor.getMonitorId(),false);
|
||||
|
||||
break;
|
||||
default:
|
||||
@@ -216,6 +218,8 @@ public class DistributionMonitorServiceImpl extends MppServiceImpl<DistributionM
|
||||
}
|
||||
LambdaUpdateWrapper<DistributionMonitor> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
|
||||
lambdaUpdateWrapper.eq(DistributionMonitor::getMonitorSort, dictData.getId());
|
||||
|
||||
String voltageLevel;
|
||||
switch (dictData.getCode()) {
|
||||
case DicDataConstant.TWO_LINE:
|
||||
//二类监测点(台区)
|
||||
@@ -223,6 +227,7 @@ public class DistributionMonitorServiceImpl extends MppServiceImpl<DistributionM
|
||||
if (Objects.isNull(powerDistributionarea)) {
|
||||
throw new BusinessException(PmsDeviceResponseEnum.TWO_MONITOR_NOT_FIND);
|
||||
}
|
||||
voltageLevel = powerDistributionarea.getVoltageLevel();
|
||||
lambdaUpdateWrapper.eq(DistributionMonitor::getMonitorId, powerDistributionarea.getId());
|
||||
break;
|
||||
case DicDataConstant.THREE_LINE:
|
||||
@@ -233,6 +238,7 @@ public class DistributionMonitorServiceImpl extends MppServiceImpl<DistributionM
|
||||
if (Objects.isNull(powerGenerationUser)) {
|
||||
throw new BusinessException(PmsDeviceResponseEnum.THREE_MONITOR_NOT_FIND);
|
||||
}
|
||||
voltageLevel = powerGenerationUser.getVoltageLevel();
|
||||
lambdaUpdateWrapper.eq(DistributionMonitor::getMonitorId, powerGenerationUser.getId());
|
||||
} else {
|
||||
//用电
|
||||
@@ -240,6 +246,7 @@ public class DistributionMonitorServiceImpl extends MppServiceImpl<DistributionM
|
||||
if (Objects.isNull(powerClient)) {
|
||||
throw new BusinessException(PmsDeviceResponseEnum.THREE_MONITOR_NOT_FIND);
|
||||
}
|
||||
voltageLevel = powerClient.getVoltageLevel();
|
||||
lambdaUpdateWrapper.eq(DistributionMonitor::getMonitorId, powerClient.getId());
|
||||
}
|
||||
break;
|
||||
@@ -252,8 +259,12 @@ public class DistributionMonitorServiceImpl extends MppServiceImpl<DistributionM
|
||||
.set(DistributionMonitor::getCt1, distributionMonitorParam.getCt1())
|
||||
.set(DistributionMonitor::getCt2, distributionMonitorParam.getCt2())
|
||||
.set(DistributionMonitor::getPt1, distributionMonitorParam.getPt1())
|
||||
.set(DistributionMonitor::getPt2, distributionMonitorParam.getPt2());
|
||||
return this.update(lambdaUpdateWrapper);
|
||||
.set(DistributionMonitor::getPt2, distributionMonitorParam.getPt2())
|
||||
.set(DistributionMonitor::getStatisticalInterval, distributionMonitorParam.getStatisticalInterval());
|
||||
|
||||
this.update(lambdaUpdateWrapper);
|
||||
overLimitAdd(voltageLevel,distributionMonitorParam.getMonitorId(),true);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -467,13 +478,7 @@ public class DistributionMonitorServiceImpl extends MppServiceImpl<DistributionM
|
||||
@Override
|
||||
public List<PwUserMonitorDataVO> getPwUserIds(PwUserMonitorParam pwUserMonitorParam) {
|
||||
List<String> deptIds = deptFeignClient.getDepSonSelfCodetByDeptId(pwUserMonitorParam.getOrgId()).getData();
|
||||
QueryWrapper<PwUserMonitorDataVO> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.in("pms_power_client.org_id", deptIds);
|
||||
if (StrUtil.isNotBlank(pwUserMonitorParam.getUserName())) {
|
||||
queryWrapper.eq("pms_power_client.name", pwUserMonitorParam.getUserName());
|
||||
}
|
||||
List<PwUserMonitorDataVO> pwUserMonitorDataVOList = this.distributionMonitorMapper.getDistributionPage(queryWrapper);
|
||||
return pwUserMonitorDataVOList;
|
||||
return this.distributionMonitorMapper.getDistributionList(deptIds,pwUserMonitorParam);
|
||||
}
|
||||
|
||||
|
||||
@@ -499,12 +504,15 @@ public class DistributionMonitorServiceImpl extends MppServiceImpl<DistributionM
|
||||
return true;
|
||||
}
|
||||
|
||||
private void overLimitAdd(String voltageLevel, String id) {
|
||||
private void overLimitAdd(String voltageLevel, String id,Boolean update) {
|
||||
DictData voltageDic = dicDataFeignClient.getDicDataById(voltageLevel).getData();
|
||||
float voltageLevelValue = Float.parseFloat(voltageDic.getValue());
|
||||
float capacity = COverlimitUtil.getDlCapByVoltageLevel(voltageLevelValue);
|
||||
Overlimit overlimit = COverlimitUtil.globalAssemble(voltageLevelValue, capacity, capacity, capacity, 1, 1);
|
||||
overlimit.setId(id);
|
||||
if(update){
|
||||
overlimitMapper.deleteById(id);
|
||||
}
|
||||
overlimitMapper.insert(overlimit);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,6 +31,7 @@ import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -157,6 +158,7 @@ public class TerminalServiceImpl extends ServiceImpl<TerminalMapper, PmsTerminal
|
||||
pmsTerminal.setStatus(DataStateEnum.ENABLE.getCode());
|
||||
pmsTerminal.setVerificationDate(LocalDate.parse(terminalParam.getVerificationDate()));
|
||||
pmsTerminal.setUseDate(LocalDate.parse(terminalParam.getUseDate()));
|
||||
pmsTerminal.setUpdateTime(LocalDateTime.now());
|
||||
return this.save(pmsTerminal);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,13 +1,16 @@
|
||||
package com.njcn.harmonic.pojo.vo;
|
||||
|
||||
|
||||
import com.njcn.device.pms.pojo.vo.pwUser.PwUserMonitorDataVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
|
||||
@Data
|
||||
public class MonitorLimitRateVO {
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class MonitorLimitRateVO extends PwUserMonitorDataVO {
|
||||
/**
|
||||
* 监测点ID合格率的变电站/装置/母线/线路序号
|
||||
*/
|
||||
@@ -19,17 +22,6 @@ public class MonitorLimitRateVO {
|
||||
private String phasicType;
|
||||
|
||||
|
||||
private String name;
|
||||
|
||||
private String orgName;
|
||||
|
||||
private String operationName;
|
||||
|
||||
private Integer ifSensitiveUser;
|
||||
|
||||
private String userType;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.njcn.harmonic.pojo.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class PwLimitDataVO {
|
||||
|
||||
private String lineId;
|
||||
|
||||
private String name;
|
||||
|
||||
private List<LimitDetail> detailList;
|
||||
|
||||
|
||||
@Data
|
||||
public static class LimitDetail{
|
||||
|
||||
private Integer limitFlag;
|
||||
|
||||
private String day;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -11,6 +11,7 @@ import com.njcn.harmonic.pojo.param.RStatLimitQueryParam;
|
||||
import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO;
|
||||
import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO;
|
||||
import com.njcn.harmonic.pojo.vo.MonitorLimitRateVO;
|
||||
import com.njcn.harmonic.pojo.vo.PwLimitDataVO;
|
||||
import com.njcn.harmonic.pojo.vo.RStatLimitTargetVO;
|
||||
import com.njcn.harmonic.service.majornetwork.RStatLimitService;
|
||||
import com.njcn.web.controller.BaseController;
|
||||
@@ -92,4 +93,13 @@ public class RStatLimitController extends BaseController {
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/pwMonitorLimitDataRange")
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@ApiOperation("获取配网指标超标详情")
|
||||
public HttpResult<List<PwLimitDataVO>> pwMonitorLimitDataRange(@RequestBody @Validated PwUserMonitorParam pwUserMonitorParam){
|
||||
String methodDescribe = getMethodDescribe("pwMonitorLimitDataRange");
|
||||
List<PwLimitDataVO> page = rStatLimitService.pwMonitorLimitDataRange(pwUserMonitorParam);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, page, methodDescribe);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ import com.njcn.device.pq.pojo.vo.GridDiagramVO;
|
||||
import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO;
|
||||
import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO;
|
||||
import com.njcn.harmonic.pojo.vo.MonitorLimitRateVO;
|
||||
import com.njcn.harmonic.pojo.vo.PwLimitDataVO;
|
||||
import com.njcn.harmonic.pojo.vo.RStatLimitRateDVO;
|
||||
import com.njcn.harmonic.pojo.vo.RStatLimitTargetVO;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
@@ -54,4 +55,6 @@ public interface RStatLimitService {
|
||||
|
||||
Page<MonitorLimitRateVO> pwMonitorLimitData(PwUserMonitorParam pwUserMonitorParam);
|
||||
|
||||
List<PwLimitDataVO> pwMonitorLimitDataRange(PwUserMonitorParam pwUserMonitorParam);
|
||||
|
||||
}
|
||||
|
||||
@@ -2,7 +2,10 @@ package com.njcn.harmonic.service.majornetwork.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import cn.hutool.core.date.DateUnit;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||
import cn.hutool.core.lang.func.Func;
|
||||
import cn.hutool.core.util.NumberUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
@@ -32,6 +35,7 @@ import com.njcn.harmonic.pojo.po.RMpVThd;
|
||||
import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO;
|
||||
import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO;
|
||||
import com.njcn.harmonic.pojo.vo.MonitorLimitRateVO;
|
||||
import com.njcn.harmonic.pojo.vo.PwLimitDataVO;
|
||||
import com.njcn.harmonic.pojo.vo.RStatLimitTargetVO;
|
||||
import com.njcn.harmonic.service.IRStatLimitTargetDService;
|
||||
import com.njcn.harmonic.service.majornetwork.RStatLimitService;
|
||||
@@ -45,6 +49,8 @@ import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Method;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.time.LocalDate;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
import java.util.function.Function;
|
||||
@@ -472,6 +478,91 @@ public class RStatLimitServiceImpl implements RStatLimitService {
|
||||
pageResult.setRecords(resultList);
|
||||
}
|
||||
return pageResult;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PwLimitDataVO> pwMonitorLimitDataRange(PwUserMonitorParam pwUserMonitorParam) {
|
||||
List<PwLimitDataVO> result = new ArrayList<>();
|
||||
if(CollUtil.isEmpty(pwUserMonitorParam.getIds())){
|
||||
return result;
|
||||
}
|
||||
|
||||
LambdaQueryWrapper<RStatLimitTargetDPO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
|
||||
LocalDate startDate = LocalDate.parse(pwUserMonitorParam.getSearchBeginTime(), DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN));
|
||||
LocalDate endDate = LocalDate.parse(pwUserMonitorParam.getSearchEndTime(), DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN));
|
||||
|
||||
lambdaQueryWrapper.select(RStatLimitTargetDPO::getLineId,RStatLimitTargetDPO::getTime,RStatLimitTargetDPO::getAllTime).in(RStatLimitTargetDPO::getLineId,pwUserMonitorParam.getIds());
|
||||
lambdaQueryWrapper.between(RStatLimitTargetDPO::getTime,pwUserMonitorParam.getSearchBeginTime(),pwUserMonitorParam.getSearchEndTime());
|
||||
List<RStatLimitTargetDPO> rStatLimitTargetDPOList = rStatLimitTargetDMapper.selectList(lambdaQueryWrapper);
|
||||
if(CollUtil.isNotEmpty(rStatLimitTargetDPOList)){
|
||||
Map<String,List<RStatLimitTargetDPO>> map = rStatLimitTargetDPOList.stream().collect(Collectors.groupingBy(RStatLimitTargetDPO::getLineId));
|
||||
processDateRange(startDate,endDate,map,result);
|
||||
}
|
||||
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public void processDateRange(LocalDate startDate, LocalDate endDate,Map<String,List<RStatLimitTargetDPO>> map,List<PwLimitDataVO> result) {
|
||||
map.forEach((lineKey,list)->{
|
||||
PwLimitDataVO pwLimitDataVO = new PwLimitDataVO();
|
||||
pwLimitDataVO.setLineId(lineKey);
|
||||
pwLimitDataVO.setName(lineKey);
|
||||
List<PwLimitDataVO.LimitDetail> detailList = new ArrayList<>();
|
||||
|
||||
if (startDate.getYear() == endDate.getYear() && startDate.getMonth() == endDate.getMonth()) {
|
||||
Map<LocalDate, RStatLimitTargetDPO> targetDPOMap = list.stream().collect(Collectors.toMap(RStatLimitTargetDPO::getTime, Function.identity()));
|
||||
// 如果在同一个月,则遍历每一天
|
||||
for (LocalDate date = startDate; !date.isAfter(endDate.minusDays(1)); date = date.plusDays(1)) {
|
||||
PwLimitDataVO.LimitDetail limitDetail = new PwLimitDataVO.LimitDetail();
|
||||
if (targetDPOMap.containsKey(date)) {
|
||||
limitDetail.setLimitFlag(targetDPOMap.get(date).getAllTime() > 0 ? 2 : 1);
|
||||
} else {
|
||||
limitDetail.setLimitFlag(0);
|
||||
}
|
||||
limitDetail.setDay(date.getDayOfMonth() +"日");
|
||||
detailList.add(limitDetail);
|
||||
}
|
||||
|
||||
}else {
|
||||
Map<String,List<RStatLimitTargetDPO>> targetDPOMap = list.stream().collect(Collectors.groupingBy(it->LocalDateTimeUtil.format(it.getTime(),DatePattern.NORM_MONTH_PATTERN)));
|
||||
// 如果在同一个月,则遍历每一天
|
||||
|
||||
// 如果不在同一个月,则遍历每个月(这里简化处理,只打印月份和年份)
|
||||
LocalDate currentDate = startDate;
|
||||
while (!currentDate.isAfter(endDate)) {
|
||||
String date = LocalDateTimeUtil.format(currentDate,DatePattern.NORM_MONTH_PATTERN);
|
||||
|
||||
PwLimitDataVO.LimitDetail limitDetail = new PwLimitDataVO.LimitDetail();
|
||||
if(targetDPOMap.containsKey(date)){
|
||||
boolean res = targetDPOMap.get(date).stream().anyMatch(item->item.getAllTime()>0);
|
||||
limitDetail.setLimitFlag(res ? 2:1);
|
||||
}else {
|
||||
limitDetail.setLimitFlag(0);
|
||||
}
|
||||
limitDetail.setDay(currentDate.getMonthValue() +"月");
|
||||
detailList.add(limitDetail);
|
||||
|
||||
|
||||
|
||||
// 跳到下一个月的第一天(注意:这里简化了处理,没有实际遍历这个月的每一天)
|
||||
currentDate = currentDate.plusMonths(1).withDayOfMonth(1);
|
||||
|
||||
// 如果当前月已经超过了结束月,则退出循环
|
||||
if (currentDate.isAfter(endDate)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
pwLimitDataVO.setDetailList(detailList);
|
||||
result.add(pwLimitDataVO);
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ import cn.hutool.core.text.StrBuilder;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
@@ -162,18 +163,28 @@ public class PqTypicalSourceCreatePOServiceImpl extends ServiceImpl<PqTypicalSou
|
||||
|
||||
//以尺寸100分片
|
||||
List<List<PqTypicalSourceCreatePO>> partition = ListUtils.partition(list, 100);
|
||||
partition.forEach(temp->{
|
||||
List<PqTypicalSourceCreateDTO> dtoList = BeanUtil.copyToList(temp, PqTypicalSourceCreateDTO.class);
|
||||
StrBuilder resultLog = new StrBuilder();
|
||||
AtomicBoolean resultFlag = new AtomicBoolean(true);
|
||||
for (int i = 0; i < partition.size(); i++) {
|
||||
List<PqTypicalSourceCreateDTO> dtoList = BeanUtil.copyToList(partition.get(i), PqTypicalSourceCreateDTO.class);
|
||||
SendParam sendParam = new SendParam();
|
||||
sendParam.setStats(dtoList);
|
||||
sendParam.setStatisticalDate(temp.get(0).getComputeDate());
|
||||
String s = JSONObject.toJSONStringWithDateFormat(sendParam, JSON.DEFFAULT_DATE_FORMAT);
|
||||
sendParam.setStatisticalDate(partition.get(i).get(0).getComputeDate());
|
||||
if(i == 0){
|
||||
sendParam.setIsAppend("0");
|
||||
}else if(i==partition.size()-1){
|
||||
sendParam.setIsAppend("2");
|
||||
}else {
|
||||
sendParam.setIsAppend("1");
|
||||
}
|
||||
Map<String, String> send = GwSendUtil.send(sendParam, GWSendEnum.TYPICAL_SOURCE);
|
||||
List<String> trIds = dtoList.stream().map(PqTypicalSourceCreateDTO::getId).distinct().collect(Collectors.toList());
|
||||
returnInformation(1, trIds, send);
|
||||
});
|
||||
|
||||
assUploadLog(localDate,new StrBuilder("典型源荷指标统计上送成功"),new AtomicBoolean(true));
|
||||
returnInformation(i, trIds, send,resultLog, resultFlag, localDate);
|
||||
}
|
||||
if (resultFlag.get()) {
|
||||
resultLog.append(" 上送" + list.size() + "条数据成功");
|
||||
assUploadLog(localDate, resultLog, resultFlag);
|
||||
}
|
||||
return "成功";
|
||||
|
||||
}
|
||||
@@ -192,34 +203,50 @@ public class PqTypicalSourceCreatePOServiceImpl extends ServiceImpl<PqTypicalSou
|
||||
/**
|
||||
* 国网上送返回信息
|
||||
*
|
||||
* @param num
|
||||
* @param ids
|
||||
* @param send
|
||||
* @return
|
||||
*/
|
||||
private String returnInformation(Integer num, List<String> ids, Map<String, String> send) {
|
||||
private void returnInformation(Integer step, List<String> ids, Map<String, String> send, StrBuilder resultLog, AtomicBoolean resultFlag, LocalDate localDate) {
|
||||
int start = step * 100;
|
||||
int end = (step + 1) * 100;
|
||||
if (send.containsKey("succeed")) {
|
||||
String succeed = send.get("succeed");
|
||||
if (succeed.indexOf("\\\"") != -1) {
|
||||
if (succeed.contains("\\\"")) {
|
||||
succeed = succeed.replace("\\\"", "\"");
|
||||
}
|
||||
Map mapData = JSON.parseObject(succeed, Map.class);
|
||||
String status = mapData.get("status").toString();
|
||||
|
||||
if ("000000".equals(status)) {
|
||||
//修改信息状态
|
||||
this.lambdaUpdate().in(PqTypicalSourceCreatePO::getId,ids).set(PqTypicalSourceCreatePO::getIsUploadHead,num).update();
|
||||
//修改数据上送状态
|
||||
updateState(ids);
|
||||
String result = mapData.get("result").toString();
|
||||
Map mapCount = JSON.parseObject(result, Map.class);
|
||||
String count = mapCount.get("count").toString();
|
||||
return "操作成功:成功数据" + count + "条";
|
||||
|
||||
} else {
|
||||
resultFlag.set(false);
|
||||
String errors = mapData.get("errors").toString();
|
||||
throw new BusinessException("操作失败:" + status + "_" + errors);
|
||||
String errorMsg = " 上送" + start + "条至" + end + "条数据,上送失败:" + status + "_" + errors + " ;";
|
||||
resultLog.append(errorMsg);
|
||||
assUploadLog(localDate, resultLog, resultFlag);
|
||||
throw new BusinessException(errorMsg);
|
||||
}
|
||||
} else {
|
||||
// updateIsUploadHead(num, ids);
|
||||
resultFlag.set(false);
|
||||
resultLog.append(" 上送" + start + "条至" + end + "条数据网络异常;");
|
||||
assUploadLog(localDate, resultLog, resultFlag);
|
||||
throw new BusinessException("当前时间段国网上送请求过多,请稍后再试");
|
||||
// return "当前时间段国网上送请求过多,请稍后再试";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void updateState(List<String> ids) {
|
||||
LambdaUpdateWrapper<PqTypicalSourceCreatePO> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
|
||||
lambdaUpdateWrapper.in(PqTypicalSourceCreatePO::getId, ids)
|
||||
.set(PqTypicalSourceCreatePO::getIsUploadHead, 1);
|
||||
this.update(lambdaUpdateWrapper);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -108,10 +108,18 @@ public class PointStatisticalDataServiceImpl extends ServiceImpl<RUploadPointSta
|
||||
AtomicBoolean resultFlag = new AtomicBoolean(true);
|
||||
//分片上传
|
||||
for (int i = 0; i < partition.size(); i++) {
|
||||
|
||||
List<MonitorStatisticalDTO> dtoList = BeanUtil.copyToList(partition.get(i), MonitorStatisticalDTO.class);
|
||||
SendParam sp = new SendParam();
|
||||
sp.setStats(dtoList);
|
||||
sp.setStatisticalDate(partition.get(i).get(0).getComputeDate());
|
||||
if(i == 0){
|
||||
sp.setIsAppend("0");
|
||||
}else if(i==partition.size()-1){
|
||||
sp.setIsAppend("2");
|
||||
}else {
|
||||
sp.setIsAppend("1");
|
||||
}
|
||||
//上送数据
|
||||
Map<String, String> send = GwSendUtil.send(sp, GWSendEnum.STATISTICAL_CREATE);
|
||||
//获取返回结果
|
||||
|
||||
@@ -203,6 +203,13 @@ public class REvaluationDataServiceImpl extends ServiceImpl<RUploadEvaluationDat
|
||||
SendParam sp = new SendParam();
|
||||
sp.setStats(dtoList);
|
||||
sp.setStatisticalDate(collect.get(0).getComputeDate());
|
||||
if(i == 0){
|
||||
sp.setIsAppend("0");
|
||||
}else if(i==partition.size()-1){
|
||||
sp.setIsAppend("2");
|
||||
}else {
|
||||
sp.setIsAppend("1");
|
||||
}
|
||||
//上送数据
|
||||
Map<String, String> send = GwSendUtil.send(sp, GWSendEnum.EVALUATION);
|
||||
//获取返回结果
|
||||
|
||||
@@ -80,18 +80,21 @@ public class RSubstationStatisticalDataServiceImpl extends ServiceImpl<RUploadSu
|
||||
//(预防之前上送过,修改数据后需要再次上送)
|
||||
if (CollUtil.isNotEmpty(param.getList())){
|
||||
list = this.lambdaQuery()
|
||||
.eq(RUploadSubstationStatisticalDataD::getStatisticalDate,param.getTime())
|
||||
.in(RUploadSubstationStatisticalDataD::getId,param.getList())
|
||||
.isNotNull(RUploadSubstationStatisticalDataD::getComputeDate)
|
||||
.eq(RUploadSubstationStatisticalDataD::getComputeDate,param.getTime())
|
||||
.list();
|
||||
}
|
||||
//未指定数据上送,则将所有未上送的数据,上送上去
|
||||
else {
|
||||
list = this.lambdaQuery()
|
||||
.eq(RUploadSubstationStatisticalDataD::getStatisticalDate,param.getTime())
|
||||
.isNotNull(RUploadSubstationStatisticalDataD::getComputeDate)
|
||||
.eq(RUploadSubstationStatisticalDataD::getComputeDate,param.getTime())
|
||||
.list();
|
||||
}
|
||||
|
||||
if(CollUtil.isEmpty(list)){
|
||||
throw new BusinessException("数据为空,请联系管理员排查");
|
||||
}
|
||||
|
||||
//以尺寸100分片
|
||||
List<List<RUploadSubstationStatisticalDataD>> partition = ListUtils.partition(list, 100);
|
||||
StrBuilder resultLog = new StrBuilder();
|
||||
@@ -106,6 +109,13 @@ public class RSubstationStatisticalDataServiceImpl extends ServiceImpl<RUploadSu
|
||||
SendParam sp = new SendParam();
|
||||
sp.setStats(dtoList);
|
||||
sp.setStatisticalDate(partition.get(i).get(0).getComputeDate());
|
||||
if(i == 0){
|
||||
sp.setIsAppend("0");
|
||||
}else if(i==partition.size()-1){
|
||||
sp.setIsAppend("2");
|
||||
}else {
|
||||
sp.setIsAppend("1");
|
||||
}
|
||||
//上送数据
|
||||
Map<String, String> send = GwSendUtil.send(sp, GWSendEnum.SUBSTATION_MONITOR);
|
||||
//获取返回结果
|
||||
|
||||
@@ -124,14 +124,10 @@ public class RUploadEvaluationDataDServiceImpl extends MppServiceImpl<RUploadEva
|
||||
|
||||
List<DeptGetChildrenMoreDTO> list = calculatedParam.getIdList();
|
||||
list.forEach(item -> {
|
||||
if (Objects.equals(Integer.parseInt(UploadEnum.NJCN_DEPT_LEVEL_1.getCode()), item.getDeptLevel())
|
||||
//县数据
|
||||
|| Objects.equals(Integer.parseInt(UploadEnum.NJCN_DEPT_LEVEL_4.getCode()),item.getDeptLevel())
|
||||
|| Objects.equals(Integer.parseInt(UploadEnum.NJCN_DEPT_LEVEL_4.getCode()), item.getDeptLevel())) {
|
||||
if (Objects.equals(Integer.parseInt(UploadEnum.NJCN_DEPT_LEVEL_1.getCode()), item.getDeptLevel())) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
BusBarDto busBarDto = allDept.stream().filter(o -> Objects.equals(o.getOrgId(), item.getUnitId())).findFirst().orElse(null);
|
||||
|
||||
List<Monitor> deptMonitorList = monitorList.stream().filter(t->item.getUnitId().contains(t.getOrgId())).collect(Collectors.toList());
|
||||
|
||||
@@ -26,12 +26,10 @@ public class UploadGwTaskSubstationRunner implements TimerTaskRunner {
|
||||
public void action(String date) {
|
||||
UploadParam param = new UploadParam();
|
||||
|
||||
param.setTime(DateUtil.yesterday().toString(DatePattern.NORM_MONTH_PATTERN));
|
||||
param.setTime(DateUtil.yesterday().toString(DatePattern.NORM_DATE_PATTERN));
|
||||
uploadGwDataFeignClient.uploadSubstationStatisticalData(param);
|
||||
|
||||
//年
|
||||
param.setTime(DateUtil.yesterday().toString(DatePattern.NORM_YEAR_PATTERN));
|
||||
uploadGwDataFeignClient.uploadSubstationStatisticalData(param);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user