1.变电站上送逻辑修改

2.添加pms配网用户侧数据完整性接口
3.添加pms配网用户侧指标越限接口
This commit is contained in:
2024-09-06 15:52:10 +08:00
parent 9f0a1ed19e
commit a3772119b4
22 changed files with 320 additions and 62 deletions

View File

@@ -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变比

View File

@@ -199,7 +199,6 @@ public class PowerClientParam {
* 用户标签
*/
@ApiModelProperty(value = "用户标签",required = true)
@NotBlank(message = "用户标签不可为空")
private String userTag;
/**

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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);
}
}

View File

@@ -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);
}

View File

@@ -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>

View File

@@ -14,4 +14,7 @@ public interface PwUserMonitorDataService {
*/
Page<PwUserMonitorDataVO> pageIntegrityData(PwUserMonitorParam pwUserMonitorParam);
Page<PwUserMonitorDataVO> getPwDeviceOnline(PwUserMonitorParam pwUserMonitorParam);
}

View File

@@ -76,6 +76,11 @@ public class PwUserMonitorDataServiceImpl implements PwUserMonitorDataService {
return pageResult;
}
@Override
public Page<PwUserMonitorDataVO> getPwDeviceOnline(PwUserMonitorParam pwUserMonitorParam) {
return null;
}
/**
* 超标情况

View File

@@ -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);
}
}

View File

@@ -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);
}

View File

@@ -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;
/**

View File

@@ -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;
}
}

View File

@@ -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);
}
}

View File

@@ -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);
}

View File

@@ -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);
});
}

View File

@@ -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);
}
}

View File

@@ -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);
//获取返回结果

View File

@@ -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);
//获取返回结果

View File

@@ -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);
//获取返回结果

View File

@@ -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());

View File

@@ -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);
}
}