15 changed files with 301 additions and 15 deletions
			
			
		@ -0,0 +1,32 @@
					 | 
				
			||||
package com.hnac.hzims.alarm.show.vo; | 
				
			||||
 | 
				
			||||
import io.swagger.annotations.ApiModelProperty; | 
				
			||||
import lombok.Data; | 
				
			||||
import org.springblade.core.mp.support.QueryField; | 
				
			||||
import org.springblade.core.mp.support.SqlCondition; | 
				
			||||
 | 
				
			||||
/** | 
				
			||||
 * @author ysj | 
				
			||||
 * @date 2023/03/17 10:02:33 | 
				
			||||
 * @version 4.0.0 | 
				
			||||
 */ | 
				
			||||
@Data | 
				
			||||
public class AlarmVideoVo { | 
				
			||||
 | 
				
			||||
    @ApiModelProperty("视频设备编码") | 
				
			||||
    private String pointCode; | 
				
			||||
 | 
				
			||||
    @ApiModelProperty("视频名称") | 
				
			||||
    @QueryField(condition = SqlCondition.LIKE) | 
				
			||||
    private String videoName; | 
				
			||||
 | 
				
			||||
    @ApiModelProperty("视频服务器host") | 
				
			||||
    private String videoHost; | 
				
			||||
 | 
				
			||||
    @ApiModelProperty("运管中心appSecret") | 
				
			||||
    private String videoAppSecret; | 
				
			||||
 | 
				
			||||
    @ApiModelProperty("运管中心appKey") | 
				
			||||
    private String videoAppKey; | 
				
			||||
} | 
				
			||||
 | 
				
			||||
@ -0,0 +1,24 @@
					 | 
				
			||||
package com.hnac.hzims.operational.report.vo; | 
				
			||||
 | 
				
			||||
import io.swagger.annotations.ApiModel; | 
				
			||||
import io.swagger.annotations.ApiModelProperty; | 
				
			||||
import lombok.Data; | 
				
			||||
 | 
				
			||||
import java.util.List; | 
				
			||||
 | 
				
			||||
/** | 
				
			||||
 * @author ysj | 
				
			||||
 */ | 
				
			||||
@Data | 
				
			||||
@ApiModel("发电量报表") | 
				
			||||
public class GenerationDeviceVo { | 
				
			||||
 | 
				
			||||
    @ApiModelProperty("设备编号") | 
				
			||||
    private String deviceCode; | 
				
			||||
 | 
				
			||||
    @ApiModelProperty("设备名称") | 
				
			||||
    private String deviceName; | 
				
			||||
 | 
				
			||||
    @ApiModelProperty("属性时间范围统计数据") | 
				
			||||
    private List<GenerationReportVo> attributes; | 
				
			||||
} | 
				
			||||
@ -0,0 +1,19 @@
					 | 
				
			||||
package com.hnac.hzims.operational.report.vo; | 
				
			||||
 | 
				
			||||
import io.swagger.annotations.ApiModel; | 
				
			||||
import io.swagger.annotations.ApiModelProperty; | 
				
			||||
import lombok.Data; | 
				
			||||
 | 
				
			||||
/** | 
				
			||||
 * @author ysj | 
				
			||||
 */ | 
				
			||||
@Data | 
				
			||||
@ApiModel("发电量报表") | 
				
			||||
public class GenerationReportTimeVo { | 
				
			||||
 | 
				
			||||
    @ApiModelProperty("时间") | 
				
			||||
    private String time; | 
				
			||||
 | 
				
			||||
    @ApiModelProperty("值") | 
				
			||||
    private Double value; | 
				
			||||
} | 
				
			||||
@ -0,0 +1,24 @@
					 | 
				
			||||
package com.hnac.hzims.operational.report.vo; | 
				
			||||
 | 
				
			||||
import io.swagger.annotations.ApiModel; | 
				
			||||
import io.swagger.annotations.ApiModelProperty; | 
				
			||||
import lombok.Data; | 
				
			||||
 | 
				
			||||
import java.util.List; | 
				
			||||
 | 
				
			||||
/** | 
				
			||||
 * @author ysj | 
				
			||||
 */ | 
				
			||||
@Data | 
				
			||||
@ApiModel("发电量报表") | 
				
			||||
public class GenerationReportVo { | 
				
			||||
 | 
				
			||||
    @ApiModelProperty("属性") | 
				
			||||
    private String attribute; | 
				
			||||
 | 
				
			||||
    @ApiModelProperty("属性名称") | 
				
			||||
    private String attributeName; | 
				
			||||
 | 
				
			||||
    @ApiModelProperty("属性时间范围统计数据") | 
				
			||||
    private List<GenerationReportTimeVo> times; | 
				
			||||
} | 
				
			||||
@ -0,0 +1,34 @@
					 | 
				
			||||
package com.hnac.hzims.operational.report.controller; | 
				
			||||
 | 
				
			||||
import com.hnac.hzims.operational.report.service.IGenerationReportService; | 
				
			||||
import com.hnac.hzims.operational.report.vo.GenerationDeviceVo; | 
				
			||||
import com.hnac.hzims.operational.report.vo.GenerationReportTimeVo; | 
				
			||||
import com.hnac.hzims.operational.report.vo.GenerationReportVo; | 
				
			||||
import lombok.AllArgsConstructor; | 
				
			||||
import lombok.extern.slf4j.Slf4j; | 
				
			||||
import org.springblade.core.boot.ctrl.BladeController; | 
				
			||||
import org.springblade.core.tool.api.R; | 
				
			||||
import org.springframework.web.bind.annotation.GetMapping; | 
				
			||||
import org.springframework.web.bind.annotation.RequestMapping; | 
				
			||||
import org.springframework.web.bind.annotation.RequestParam; | 
				
			||||
import org.springframework.web.bind.annotation.RestController; | 
				
			||||
 | 
				
			||||
import java.util.List; | 
				
			||||
 | 
				
			||||
/** | 
				
			||||
 * @author ysj | 
				
			||||
 */ | 
				
			||||
@Slf4j | 
				
			||||
@AllArgsConstructor | 
				
			||||
@RestController | 
				
			||||
@RequestMapping("/generation/report") | 
				
			||||
public class GenerationReportController extends BladeController { | 
				
			||||
 | 
				
			||||
    private final IGenerationReportService service; | 
				
			||||
 | 
				
			||||
    @GetMapping("/sameDayReport") | 
				
			||||
    public R<List<GenerationDeviceVo>> sameDayReport(@RequestParam("stationId") String stationId){ | 
				
			||||
        return R.data(service.sameDayReport(stationId)); | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
} | 
				
			||||
@ -0,0 +1,14 @@
					 | 
				
			||||
package com.hnac.hzims.operational.report.service; | 
				
			||||
 | 
				
			||||
import com.hnac.hzims.operational.report.vo.GenerationDeviceVo; | 
				
			||||
import com.hnac.hzims.operational.report.vo.GenerationReportVo; | 
				
			||||
 | 
				
			||||
import java.util.List; | 
				
			||||
 | 
				
			||||
/** | 
				
			||||
 * @author ysj | 
				
			||||
 */ | 
				
			||||
public interface IGenerationReportService { | 
				
			||||
 | 
				
			||||
    List<GenerationDeviceVo> sameDayReport(String stationId); | 
				
			||||
} | 
				
			||||
@ -0,0 +1,100 @@
					 | 
				
			||||
package com.hnac.hzims.operational.report.service.impl; | 
				
			||||
 | 
				
			||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | 
				
			||||
import com.hnac.hzims.equipment.entity.EmInfoEntity; | 
				
			||||
import com.hnac.hzims.equipment.feign.IEmInfoClient; | 
				
			||||
import com.hnac.hzims.operational.report.service.IGenerationReportService; | 
				
			||||
import com.hnac.hzims.operational.report.vo.GenerationDeviceVo; | 
				
			||||
import com.hnac.hzims.operational.report.vo.GenerationReportTimeVo; | 
				
			||||
import com.hnac.hzims.operational.report.vo.GenerationReportVo; | 
				
			||||
import com.hnac.hzims.operational.station.entity.StationEntity; | 
				
			||||
import com.hnac.hzims.operational.station.service.IStationService; | 
				
			||||
import lombok.RequiredArgsConstructor; | 
				
			||||
import lombok.extern.slf4j.Slf4j; | 
				
			||||
import org.springblade.core.log.exception.ServiceException; | 
				
			||||
import org.springblade.core.tool.utils.CollectionUtil; | 
				
			||||
import org.springblade.core.tool.utils.ObjectUtil; | 
				
			||||
import org.springframework.stereotype.Service; | 
				
			||||
 | 
				
			||||
import java.util.*; | 
				
			||||
import java.util.stream.Collectors; | 
				
			||||
 | 
				
			||||
/** | 
				
			||||
 * @author ysj | 
				
			||||
 */ | 
				
			||||
@Service | 
				
			||||
@Slf4j | 
				
			||||
@RequiredArgsConstructor | 
				
			||||
public class GenerationReportServiceImpl implements IGenerationReportService { | 
				
			||||
 | 
				
			||||
    private final IStationService stationService; | 
				
			||||
 | 
				
			||||
    private final IEmInfoClient deviceClient; | 
				
			||||
 | 
				
			||||
    /** | 
				
			||||
     * 当天报表 | 
				
			||||
     * @param stationId | 
				
			||||
     * @return | 
				
			||||
     */ | 
				
			||||
    @Override | 
				
			||||
    public List<GenerationDeviceVo> sameDayReport(String stationId) { | 
				
			||||
        // 查询站点
 | 
				
			||||
        StationEntity station = stationService.getOne(Wrappers.<StationEntity>lambdaQuery().eq(StationEntity::getCode,stationId)); | 
				
			||||
        if(ObjectUtil.isEmpty(station)){ | 
				
			||||
            throw new ServiceException("未查询到站点信息!"); | 
				
			||||
        } | 
				
			||||
        // 查询站点机组设备
 | 
				
			||||
        List<EmInfoEntity> devices = deviceClient.crewsDevices(station.getRefDept()); | 
				
			||||
        if(CollectionUtil.isEmpty(devices)){ | 
				
			||||
            throw new ServiceException("未查询到站点机组类型设备!"); | 
				
			||||
        } | 
				
			||||
        // FIXME 属性标识
 | 
				
			||||
        Map<String,String> signages = new HashMap<>(); | 
				
			||||
        signages.put("active_power","有功功率"); | 
				
			||||
        signages.put("reactive_power","无功功率"); | 
				
			||||
        signages.put("generation_capacity","正向有功电量"); | 
				
			||||
        signages.put("reactive_generation_capacity","正向无功电量"); | 
				
			||||
        List<String> times = this.sameDayValues(); | 
				
			||||
        Random random = new Random(); | 
				
			||||
        return devices.stream().map(device->{ | 
				
			||||
            GenerationDeviceVo item = new GenerationDeviceVo(); | 
				
			||||
            item.setDeviceCode(device.getNumber()); | 
				
			||||
            item.setDeviceName(device.getName()); | 
				
			||||
            item.setAttributes(signages.entrySet().stream().map(entry->{ | 
				
			||||
                GenerationReportVo attribute = new GenerationReportVo(); | 
				
			||||
                attribute.setAttribute(entry.getKey()); | 
				
			||||
                attribute.setAttributeName(entry.getValue()); | 
				
			||||
                // FIXME : 使用随机数
 | 
				
			||||
                attribute.setTimes(times.stream().map(time->{ | 
				
			||||
                    GenerationReportTimeVo generation = new GenerationReportTimeVo(); | 
				
			||||
                    generation.setTime(time); | 
				
			||||
                    generation.setValue(random.nextDouble() * 1000); | 
				
			||||
                    return generation; | 
				
			||||
                }).collect(Collectors.toList())); | 
				
			||||
                return attribute; | 
				
			||||
            }).collect(Collectors.toList())); | 
				
			||||
            return item; | 
				
			||||
        }).collect(Collectors.toList()); | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    /** | 
				
			||||
     * 当天数据值 | 
				
			||||
     * @return | 
				
			||||
     */ | 
				
			||||
    private List<String> sameDayValues() { | 
				
			||||
        Calendar calendar = Calendar.getInstance(); | 
				
			||||
        Date end = calendar.getTime(); | 
				
			||||
        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)); | 
				
			||||
        calendar.add(Calendar.MILLISECOND,-calendar.get(Calendar.MILLISECOND)); | 
				
			||||
        Date start = calendar.getTime(); | 
				
			||||
        List<String> times = new ArrayList<>(); | 
				
			||||
        while (start.compareTo(end) <= 0){ | 
				
			||||
            calendar.add(Calendar.HOUR_OF_DAY,1); | 
				
			||||
            times.add(start.getHours() + "时"); | 
				
			||||
            start = calendar.getTime(); | 
				
			||||
        } | 
				
			||||
        return times; | 
				
			||||
    } | 
				
			||||
} | 
				
			||||
					Loading…
					
					
				
		Reference in new issue