Browse Source

#新版电站页面修改

zhongwei
yang_shj 4 months ago
parent
commit
32c08e1123
  1. 6
      hzims-service-api/hzims-operational-api/src/main/java/com/hnac/hzims/operational/main/vo/HydropowerStationVo.java
  2. 6
      hzims-service-api/hzims-operational-api/src/main/java/com/hnac/hzims/operational/main/vo/HydropowerUnitTargetVo.java
  3. 1
      hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/scheduled/RealTargetScheduledTask.java
  4. 190
      hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/service/operation/home/impl/RealTargetServiceImpl.java
  5. 6
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/access/service/impl/OperAccessLibraryServiceImpl.java
  6. 30
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/HydropowerServiceImpl.java

6
hzims-service-api/hzims-operational-api/src/main/java/com/hnac/hzims/operational/main/vo/HydropowerStationVo.java

@ -60,6 +60,12 @@ public class HydropowerStationVo {
@ApiModelProperty(value = "年发电量")
private Float powerYear;
@ApiModelProperty(value = "今日发电量")
private Float powerDay;
@ApiModelProperty(value = "昨日发电量")
private Float powerYesterDay;
@ApiModelProperty(value = "年发电完成率")
private Double powerRateYear;

6
hzims-service-api/hzims-operational-api/src/main/java/com/hnac/hzims/operational/main/vo/HydropowerUnitTargetVo.java

@ -29,12 +29,18 @@ public class HydropowerUnitTargetVo {
@ApiModelProperty(value = "当年发电量")
private Float powerYear;
@ApiModelProperty(value = "当年发电量")
private Float powerYesterYear;
@ApiModelProperty(value = "当月发电量")
private Float powerMon;
@ApiModelProperty(value = "当日发电量")
private Float powerDay;
@ApiModelProperty(value = "昨日发电量")
private Float powerYesterDay;
@ApiModelProperty(value = "当日机组有功功率")
private List<ActivePowerVo> activePowerVoList;

1
hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/scheduled/RealTargetScheduledTask.java

@ -8,6 +8,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.Arrays;

190
hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/service/operation/home/impl/RealTargetServiceImpl.java

@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.hnac.hzims.EquipmentConstants;
import com.hnac.hzims.equipment.entity.EmParamEntity;
import com.hnac.hzims.equipment.entity.ThirtyGenerationEntity;
import com.hnac.hzims.equipment.entity.ThreeGenerationEntity;
import com.hnac.hzims.equipment.vo.EminfoAndEmParamVo;
import com.hnac.hzims.hzimsweather.feign.IHeWeatherWeatherClient;
import com.hnac.hzims.hzimsweather.vo.RainFallCountByMonthVo;
@ -19,6 +21,8 @@ import com.hnac.hzims.operational.station.entity.HzimsAnalyzeModelStationEntity;
import com.hnac.hzims.operational.station.entity.StationEntity;
import com.hnac.hzims.scheduled.service.equipment.DeviceParamService;
import com.hnac.hzims.scheduled.service.equipment.DeviceService;
import com.hnac.hzims.scheduled.service.equipment.ThirtyGenerateService;
import com.hnac.hzims.scheduled.service.equipment.ThreeGenerateService;
import com.hnac.hzims.scheduled.service.operation.fill.*;
import com.hnac.hzims.scheduled.service.operation.home.ModelStationService;
import com.hnac.hzims.scheduled.service.operation.home.RealTargetService;
@ -92,6 +96,10 @@ public class RealTargetServiceImpl implements RealTargetService {
private final ModelStationService modelStationService;
private final ThreeGenerateService threeGenerateService;
private final ThirtyGenerateService thirtyGenerateService;
private final RedisTemplate redisTemplate;
private final IHeWeatherWeatherClient heWeatherWeatherClient;
@ -102,6 +110,7 @@ public class RealTargetServiceImpl implements RealTargetService {
private final DeviceDataClient deviceDataClient;
@Value("${hzims.equipment.emInfo.emInfoList}")
public String device_cache_cofig_final;
@ -272,6 +281,12 @@ public class RealTargetServiceImpl implements RealTargetService {
if(CollectionUtil.isEmpty(stations)){
return;
}
// 设备30日发电量
List<ThirtyGenerationEntity> generations = this.thirtyGenerations(stations.stream().map(StationEntity::getCode).collect(Collectors.toList()));
// 设备当年发电量
List<ThreeGenerationEntity> generationYears = this.threeGenerations(stations.stream().map(StationEntity::getCode).collect(Collectors.toList()));
// 设备去年发电量
List<ThreeGenerationEntity> generationYesterYears = this.threeYesterGenerations(stations.stream().map(StationEntity::getCode).collect(Collectors.toList()));
// 补充填补发电指标
List<HydropowerUnitTargetVo> targets = this.generteFill(stations);
// 水电站设备
@ -283,19 +298,24 @@ public class RealTargetServiceImpl implements RealTargetService {
try{
HydropowerUnitTargetVo target = new HydropowerUnitTargetVo();
target.setDeptId(device.getCreateDept());
Optional<StationEntity> station = stations.stream().filter(o->o.getRefDept().equals(device.getCreateDept())).findFirst();
station.ifPresent(stationEntity -> target.setDeptName(stationEntity.getName()));
target.setDeviceCode(device.getEmCode());
target.setDeviceName(device.getName());
target.setDeptName(device.getName());
// 当年发电量
target.setPowerYear(this.getGenerationPower(device, 0));
target.setPowerYear(this.devicePowerYear(generationYears,device));
// 去年发电量
target.setPowerYesterYear(this.devicePowerYesterYear(generationYesterYears,device));
// 当月发电量
target.setPowerMon(this.getGenerationPower(device, 1));
target.setPowerMon(this.devicePowerMon(generationYears,device));
// 当日发电量
target.setPowerDay(this.getGenerationPower(device, 2));
target.setPowerDay(this.devicePowerDay(generations,device));
// 昨日发电量
target.setPowerYesterDay(this.devicePowerYesterDay(generations,device));
// 当天有功功率
target.setActivePowerVoList(this.getLoadsByDay(device));
// 30天发电量
target.setGenerationPowerVoList(this.getGenerationPowerList(device));
target.setGenerationPowerVoList(this.getGenerationPowerList(generations,device));
targets.add(target);
countDownLatch.countDown();
}catch (Exception exception){
@ -317,6 +337,75 @@ public class RealTargetServiceImpl implements RealTargetService {
redisTemplate.opsForValue().set(load_hydropower_unit_target_key,targets);
}
/**
* 去年发电量
* @param generations
* @param device
* @return
*/
private Float devicePowerYesterYear(List<ThreeGenerationEntity> generations, EminfoAndEmParamVo device) {
if(CollectionUtil.isEmpty(generations)){
return 0f;
}
return (float) generations.stream().filter(o -> StringUtil.isNotBlank(o.getDeviceCode()) && o.getDeviceCode().equals(device.getEmCode())).mapToDouble(o->o.getGenerate().doubleValue()).sum();
}
/**
* 当年发电量
* @param generations
* @param device
* @return
*/
private Float devicePowerYear(List<ThreeGenerationEntity> generations, EminfoAndEmParamVo device) {
if(CollectionUtil.isEmpty(generations)){
return 0f;
}
return (float) generations.stream().filter(o -> StringUtil.isNotBlank(o.getDeviceCode()) && o.getDeviceCode().equals(device.getEmCode())).mapToDouble(o->o.getGenerate().doubleValue()).sum();
}
/**
* 当月发电量
* @param generations
* @param device
* @return
*/
private Float devicePowerMon(List<ThreeGenerationEntity> generations, EminfoAndEmParamVo device) {
if(CollectionUtil.isEmpty(generations)){
return 0f;
}
return (float) generations.stream().filter(o-> StringUtil.isNotBlank(o.getDeviceCode()) && o.getDeviceCode().equals(device.getEmCode()) && o.getStrMonth().contains(DateUtil.format(new Date(),"yyyy-MM"))).mapToDouble(o->o.getGenerate().doubleValue()).sum();
}
/**
* 设备当日发电量
* @param generations
* @param device
* @return
*/
private Float devicePowerDay(List<ThirtyGenerationEntity> generations, EminfoAndEmParamVo device) {
if(CollectionUtil.isEmpty(generations)){
return 0f;
}
return (float) generations.stream().filter(o->o.getDeviceCode().equals(device.getEmCode()) && o.getStrDay().contains(DateUtil.format(new Date(),DateUtil.PATTERN_DATE))).mapToDouble(o->o.getGenerate().doubleValue()).sum();
}
/**
* 设备昨日发电量
* @param generations
* @param device
* @return
*/
private Float devicePowerYesterDay(List<ThirtyGenerationEntity> generations, EminfoAndEmParamVo device) {
if(CollectionUtil.isEmpty(generations)){
return 0f;
}
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_MONTH,-1);
return (float) generations.stream().filter(o->o.getDeviceCode().equals(device.getEmCode()) && o.getStrDay().contains(DateUtil.format(calendar.getTime(),DateUtil.PATTERN_DATE))).mapToDouble(o->o.getGenerate().doubleValue()).sum();
}
/**
* 水利-泵组实时加载
* @param param
@ -1392,7 +1481,7 @@ public class RealTargetServiceImpl implements RealTargetService {
}
return records.stream().map(record -> {
ActivePowerVo load = new ActivePowerVo();
Date time = DateUtil.parse(record.getTs(), "yyyy-MM-dd HH:mm:ss.s");
Date time = DateUtil.parse(record.getTs(), "yyyy-MM-dd HH:mm:ss");
load.setStrHour(DateUtil.format(time,"yyyy-MM-dd HH"));
load.setHour(time.getHours());
if(StringUtil.isNotBlank(record.getVal())){
@ -1469,10 +1558,14 @@ public class RealTargetServiceImpl implements RealTargetService {
target.setDeptName(station.getName());
// 当年发电量
target.setPowerYear(generateService.generate(year,station.getCode()));
// FIXME 去年发电量
target.setPowerYesterYear(0f);
// 当月发电量
target.setPowerMon(generateService.generate(mon,station.getCode()));
// 当日发电量
target.setPowerDay(generateService.generate(day,station.getCode()));
// FIXME 昨日发电量
target.setPowerYesterDay(0f);
// 30天发电量
target.setGenerationPowerVoList(generateService.generate30Day(day,station.getCode()));
return target;
@ -1875,33 +1968,78 @@ public class RealTargetServiceImpl implements RealTargetService {
return dataService.periodTargetFloat(start,end,5,accessRules,device.getEmCode(),device.getRideCount(),HomePageConstant.HYDROPOWER_GENERATE_POWER);
}
/**
* 近30天发电量
* @param device
* 站点设备近30天发电量
* @param stations
* @return
*/
private List<GenerationPowerVo> getGenerationPowerList(EminfoAndEmParamVo device) {
private List<ThirtyGenerationEntity> thirtyGenerations(List<String> stations) {
Calendar calendar = Calendar.getInstance();
String end = DateUtil.format(calendar.getTime(), DateUtil.PATTERN_DATETIME);
calendar.add(Calendar.DAY_OF_MONTH,-29);
calendar.add(Calendar.HOUR_OF_DAY,-calendar.get(Calendar.HOUR_OF_DAY));
calendar.add(Calendar.MINUTE,-calendar.get(Calendar.MINUTE));
calendar.add(Calendar.SECOND,-calendar.get(Calendar.SECOND));
String start = DateUtil.format(calendar.getTime(), DateUtil.PATTERN_DATETIME);
List<AnalyseDataTaosVO> records = dataService.periodTargetData(start,end,5,EquipmentConstants.CycleTypeEnum.DAY_CYCLE.getType(),device.getEmCode(),HomePageConstant.HYDROPOWER_GENERATE_POWER);
if(CollectionUtil.isEmpty(records)){
return new ArrayList<>();
}
return records.stream().map(record -> {
GenerationPowerVo generate = new GenerationPowerVo();
Date time = DateUtil.parse(record.getTs(), "yyyy-MM-dd HH:mm:ss.s");
generate.setDate(DateUtil.format(time,DateUtil.PATTERN_DATE));
if(StringUtil.isEmpty(record.getVal())){
generate.setGenerate(0f);
String start = DateUtil.format(calendar.getTime(), DateUtil.PATTERN_DATE);
return thirtyGenerateService.list(Wrappers.<ThirtyGenerationEntity>lambdaQuery()
.in(ThirtyGenerationEntity::getStationId,stations)
.ge(ThirtyGenerationEntity::getStrDay,start)
.le(ThirtyGenerationEntity::getStrDay,end)
);
}
/**
* 站点设备今年发电量
* @param stations
* @return
*/
private List<ThreeGenerationEntity> threeGenerations(List<String> stations) {
return threeGenerateService.list(Wrappers.<ThreeGenerationEntity>lambdaQuery()
.in(ThreeGenerationEntity::getStationId,stations)
.like(ThreeGenerationEntity::getStrMonth,DateUtil.format(new Date(),"yyyy"))
);
}
/**
* 查询设备去年发电量
* @param stations
* @return
*/
private List<ThreeGenerationEntity> threeYesterGenerations(List<String> stations) {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.YEAR,-1);
return threeGenerateService.list(Wrappers.<ThreeGenerationEntity>lambdaQuery()
.in(ThreeGenerationEntity::getStationId,stations)
.like(ThreeGenerationEntity::getStrMonth,DateUtil.format(calendar.getTime(),"yyyy"))
);
}
/**
* 设备近30天发电量组装
* @param generations
* @param device
* @return
*/
private List<GenerationPowerVo> getGenerationPowerList(List<ThirtyGenerationEntity> generations,EminfoAndEmParamVo device) {
Calendar calendar = Calendar.getInstance();
Date end = calendar.getTime();
calendar.add(Calendar.DAY_OF_MONTH,-29);
Date start = calendar.getTime();
List<GenerationPowerVo> powers = new ArrayList<>();
while (end.compareTo(start) >= 0){
GenerationPowerVo power = new GenerationPowerVo();
if (CollectionUtil.isEmpty(generations)) {
power.setDate(DateUtil.format(start,DateUtil.PATTERN_DATE));
power.setGenerate(0f);
}else{
generate.setGenerate(Float.parseFloat(String.valueOf(Double.parseDouble(record.getVal()) * device.getRideCount())));
String date = DateUtil.format(start,DateUtil.PATTERN_DATE);
power.setDate(date);
power.setGenerate((float) generations.stream().filter(iter->iter.getDeviceCode().equals(device.getEmCode()) && iter.getStrDay().contains(date)).mapToDouble(o->o.getGenerate().doubleValue()).sum());
}
return generate;
}).collect(Collectors.toList());
calendar.add(Calendar.DAY_OF_MONTH,1);
powers.add(power);
start = calendar.getTime();
}
return powers;
}
}

6
hzims-service/operational/src/main/java/com/hnac/hzims/operational/access/service/impl/OperAccessLibraryServiceImpl.java

@ -86,8 +86,12 @@ public class OperAccessLibraryServiceImpl extends ServiceImpl<OperAccessLibraryM
}
@Override
public R<OperAccessLibraryVO> detail(Long id) {
public R<OperAccessLibraryVO>
detail(Long id) {
OperAccessLibraryVO detail = OperAccessLibraryWrapper.build(emInfoClient).entityVO(super.getById(id));
if(StringUtils.isEmpty(detail.getSafeInfos())){
R.data(detail);
}
detail.setDangerSources(dangerSourceClient.details(detail.getSafeInfos().split(",")));
return R.data(detail);
}

30
hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/HydropowerServiceImpl.java

@ -169,7 +169,9 @@ public class HydropowerServiceImpl implements HydropowerService {
this.stationMonthPower(station.getCode(),map,response);
// 水位、水位曲线
this.handleWaterLeve(station.getCode(),response);
// 年发电量完成百分比
// 今日,昨日发电量
this.powerDay(station,targetList,response);
// 年发电量完成百分比曲线
response.setPowerYearMap(this.handlePowerFinish(Collections.singletonList(station),map));
// 设备信息
response.setDeviceList(this.getDevices(station,realList,targetList));
@ -177,6 +179,26 @@ public class HydropowerServiceImpl implements HydropowerService {
}
/**
* 今日昨日发电量
* @param station
* @param targetList
* @param response
*/
private void powerDay(StationEntity station, List<HydropowerUnitTargetVo> targetList, HydropowerStationVo response) {
response.setPowerDay(0f);
response.setPowerYesterDay(0f);
if(CollectionUtil.isEmpty(targetList)){
return;
}
List<HydropowerUnitTargetVo> valids = targetList.stream().filter(o-> null != station.getRefDept() && station.getRefDept().equals(o.getDeptId())).collect(Collectors.toList());
if(CollectionUtil.isEmpty(valids)){
return;
}
response.setPowerDay((float)valids.stream().mapToDouble(HydropowerUnitTargetVo::getPowerDay).sum());
response.setPowerYesterDay((float)valids.stream().mapToDouble(HydropowerUnitTargetVo::getPowerYesterDay).sum());
}
/**
* 水电站-机组列表
* @param deptId
* @return
@ -223,10 +245,8 @@ public class HydropowerServiceImpl implements HydropowerService {
hydropowerUnitVo.setHydropowerPumpRealVo(real);
// 指标数据
if(CollectionUtil.isNotEmpty(validTargetList)){
List<HydropowerUnitTargetVo> target = targetList.stream().filter(o->real.getDeviceCode().equals(o.getDeviceCode())).collect(Collectors.toList());
if(CollectionUtil.isNotEmpty(target)){
hydropowerUnitVo.setHydropowerPumpTargetVo(target.get(0));
}
Optional<HydropowerUnitTargetVo> optional = targetList.stream().filter(o->real.getDeviceCode().equals(o.getDeviceCode())).findFirst();
optional.ifPresent(hydropowerUnitVo::setHydropowerPumpTargetVo);
}
list.add(hydropowerUnitVo);
}

Loading…
Cancel
Save