zbj//大屏暂降事件时间统计

This commit is contained in:
zhangbaojian
2023-04-03 11:47:46 +08:00
parent 3b68f67ac3
commit 62d0e20cba
6 changed files with 129 additions and 1 deletions

View File

@@ -0,0 +1,29 @@
package com.njcn.device.pq.pojo.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* @version 1.0.0
* @author: zbj
* @date: 2023/04/03
*/
@Data
public class DownTimeVO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 时间
*/
@ApiModelProperty("时间")
private String time;
/**
* 干扰源暂降次数
*/
@ApiModelProperty("干扰源暂降次数")
private Integer count;
}

View File

@@ -7,6 +7,7 @@ import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil; import com.njcn.common.utils.HttpResultUtil;
import com.njcn.device.pq.pojo.param.LargeScreenParam; import com.njcn.device.pq.pojo.param.LargeScreenParam;
import com.njcn.device.pq.pojo.vo.AreaDownVO; import com.njcn.device.pq.pojo.vo.AreaDownVO;
import com.njcn.device.pq.pojo.vo.DownTimeVO;
import com.njcn.device.pq.pojo.vo.LoadTypeVO; import com.njcn.device.pq.pojo.vo.LoadTypeVO;
import com.njcn.device.pq.pojo.vo.MonitoringPointScaleVO; import com.njcn.device.pq.pojo.vo.MonitoringPointScaleVO;
@@ -64,4 +65,17 @@ public class LargeScreenController extends BaseController {
List<LoadTypeVO> result = largeScreenService.getLoadType(largeScreenParam); List<LoadTypeVO> result = largeScreenService.getLoadType(largeScreenParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
} }
/**
* 暂降事件时间统计
*/
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/getTimeCount")
@ApiOperation("暂降事件时间统计")
@ApiImplicitParam(name = "largeScreenParam", value = "暂降事件时间统计", required = true)
public HttpResult<List<DownTimeVO>> getTimeCount(@RequestBody @Validated LargeScreenParam largeScreenParam) {
String methodDescribe = getMethodDescribe("getTimeCount");
List<DownTimeVO> result = largeScreenService.getTimeCount(largeScreenParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
} }

View File

@@ -16,4 +16,6 @@ public interface LargeScreenMapper {
List<Map<String, Object>> selectLoadTypeCount(@Param("lineIds") List<String> lineIds, @Param("startTime") String startTime, @Param("endTime") String endTime); List<Map<String, Object>> selectLoadTypeCount(@Param("lineIds") List<String> lineIds, @Param("startTime") String startTime, @Param("endTime") String endTime);
List<Map<String, Object>> getTimeCount(@Param("lineIds") List<String> lineIds, @Param("startTime") String startTime, @Param("endTime") String endTime);
} }

View File

@@ -37,4 +37,20 @@
</if> </if>
group by ed.measurement_point_id group by ed.measurement_point_id
</select> </select>
<select id="getTimeCount" resultType="java.util.Map">
select
date(ed.create_time) "day", count(*) "count"
from r_mp_event_detail ed where ed.measurement_point_id in
<foreach collection="lineIds" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
<if test="startTime != null and startTime != ''">
and date_format(ed.create_time,'%y%m%d') &gt;= date_format(#{startTime},'%y%m%d')
</if>
<if test="endTime != null and endTime != ''">
and date_format(ed.create_time,'%y%m%d') &lt;= date_format(#{endTime},'%y%m%d')
</if>
group by day
</select>
</mapper> </mapper>

View File

@@ -6,16 +6,19 @@ import com.njcn.device.pq.pojo.param.DeviceInfoParam;
import com.njcn.device.pq.pojo.param.LargeScreenParam; import com.njcn.device.pq.pojo.param.LargeScreenParam;
import com.njcn.device.pq.pojo.param.MonitoringPointScaleParam; import com.njcn.device.pq.pojo.param.MonitoringPointScaleParam;
import com.njcn.device.pq.pojo.vo.AreaDownVO; import com.njcn.device.pq.pojo.vo.AreaDownVO;
import com.njcn.device.pq.pojo.vo.DownTimeVO;
import com.njcn.device.pq.pojo.vo.LoadTypeVO; import com.njcn.device.pq.pojo.vo.LoadTypeVO;
import com.njcn.device.pq.pojo.vo.MonitoringPointScaleVO;
import com.njcn.event.mapper.majornetwork.LargeScreenMapper; import com.njcn.event.mapper.majornetwork.LargeScreenMapper;
import com.njcn.event.service.majornetwork.LargeScreenService; import com.njcn.event.service.majornetwork.LargeScreenService;
import com.njcn.system.pojo.enums.StatisticsEnum; import com.njcn.system.pojo.enums.StatisticsEnum;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.map.HashedMap;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.njcn.device.pq.api.GeneralDeviceInfoClient; import com.njcn.device.pq.api.GeneralDeviceInfoClient;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@@ -162,4 +165,66 @@ public class LargeScreenServiceImpl implements LargeScreenService {
} }
return result; return result;
} }
/**
* 暂降事件时间统计
*/
@Override
public List<DownTimeVO> getTimeCount(LargeScreenParam largeScreenParam) {
//创建返回VO
List<DownTimeVO> result = new ArrayList<>();
DeviceInfoParam.BusinessParam deviceInfoParam = new DeviceInfoParam.BusinessParam();
//部门索引
deviceInfoParam.setDeptIndex(largeScreenParam.getDeptIndex());
//统计类型
SimpleDTO simpleDTO = new SimpleDTO();
simpleDTO.setCode(String.valueOf(StatisticsEnum.LOAD_TYPE));
deviceInfoParam.setStatisticalType(simpleDTO);
//添加时间
deviceInfoParam.setSearchBeginTime(largeScreenParam.getSearchBeginTime());
deviceInfoParam.setSearchEndTime(largeScreenParam.getSearchEndTime());
//添加服务名
deviceInfoParam.setServerName("event-boot");
// 获取所有数据
List<GeneralDeviceDTO> generalDeviceDTOList = generalDeviceInfoClient.getPracticalAllDeviceInfo(deviceInfoParam).getData();
//获取所有监测点集合
List<String> lineIds = generalDeviceDTOList.stream().flatMap(dto -> dto.getLineIndexes().stream()).collect(Collectors.toList());
List<Map<String, Object>> maps = largeScreenMapper.getTimeCount(lineIds, largeScreenParam.getSearchBeginTime(), largeScreenParam.getSearchEndTime());
Map<LocalDate, Integer> eventMap = new HashedMap();
for (Map<String, Object> map : maps) {
eventMap.put(LocalDate.parse(map.get("day").toString()),Integer.parseInt(map.get("count").toString()));
}
// 创建返回结果的Map集合
Map<LocalDate, Integer> resultMap = new HashMap<>();
// 定义事件日期区间
LocalDate start = LocalDate.parse(largeScreenParam.getSearchBeginTime()); // 开始日期
LocalDate end = LocalDate.parse( largeScreenParam.getSearchEndTime()); // 结束日期
// 循环遍历事件日期区间中的每一天并尝试从事件日期的Map集合中获取对应的值
for (LocalDate date = start; !date.isAfter(end); date = date.plusDays(1)) {
Integer value = eventMap.get(date);
// 如果事件日期的Map集合中存在这一天则将对应键值对添加到返回结果的Map集合中
if (value != null) {
resultMap.put(date, value);
}
// 否则将这一天添加到返回结果的Map集合中并将值设为0表示这一天没有事件
else {
resultMap.put(date, 0);
}
}
// 输出返回结果的Map集合中的每一个键值对
resultMap.entrySet().forEach(System.out::println);
for (LocalDate s : resultMap.keySet()) {
DownTimeVO downTimeVO = new DownTimeVO();
downTimeVO.setTime(s.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
downTimeVO.setCount(resultMap.get(s));
result.add(downTimeVO);
}
return result;
}
} }

View File

@@ -2,6 +2,7 @@ package com.njcn.event.service.majornetwork;
import com.njcn.device.pq.pojo.param.LargeScreenParam; import com.njcn.device.pq.pojo.param.LargeScreenParam;
import com.njcn.device.pq.pojo.vo.AreaDownVO; import com.njcn.device.pq.pojo.vo.AreaDownVO;
import com.njcn.device.pq.pojo.vo.DownTimeVO;
import com.njcn.device.pq.pojo.vo.LoadTypeVO; import com.njcn.device.pq.pojo.vo.LoadTypeVO;
import java.util.List; import java.util.List;
@@ -18,4 +19,5 @@ public interface LargeScreenService {
List<LoadTypeVO> getLoadType(LargeScreenParam largeScreenParam); List<LoadTypeVO> getLoadType(LargeScreenParam largeScreenParam);
List<DownTimeVO> getTimeCount(LargeScreenParam largeScreenParam);
} }