zbj//大屏暂降事件时间统计
This commit is contained in:
@@ -7,6 +7,7 @@ import com.njcn.common.pojo.response.HttpResult;
|
||||
import com.njcn.common.utils.HttpResultUtil;
|
||||
import com.njcn.device.pq.pojo.param.LargeScreenParam;
|
||||
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.MonitoringPointScaleVO;
|
||||
|
||||
@@ -64,4 +65,17 @@ public class LargeScreenController extends BaseController {
|
||||
List<LoadTypeVO> result = largeScreenService.getLoadType(largeScreenParam);
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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>> getTimeCount(@Param("lineIds") List<String> lineIds, @Param("startTime") String startTime, @Param("endTime") String endTime);
|
||||
|
||||
}
|
||||
|
||||
@@ -37,4 +37,20 @@
|
||||
</if>
|
||||
group by ed.measurement_point_id
|
||||
</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') >= date_format(#{startTime},'%y%m%d')
|
||||
</if>
|
||||
<if test="endTime != null and endTime != ''">
|
||||
and date_format(ed.create_time,'%y%m%d') <= date_format(#{endTime},'%y%m%d')
|
||||
</if>
|
||||
group by day
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@@ -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.MonitoringPointScaleParam;
|
||||
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.MonitoringPointScaleVO;
|
||||
import com.njcn.event.mapper.majornetwork.LargeScreenMapper;
|
||||
import com.njcn.event.service.majornetwork.LargeScreenService;
|
||||
import com.njcn.system.pojo.enums.StatisticsEnum;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections.map.HashedMap;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.njcn.device.pq.api.GeneralDeviceInfoClient;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
@@ -162,4 +165,66 @@ public class LargeScreenServiceImpl implements LargeScreenService {
|
||||
}
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.njcn.event.service.majornetwork;
|
||||
|
||||
import com.njcn.device.pq.pojo.param.LargeScreenParam;
|
||||
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 java.util.List;
|
||||
@@ -18,4 +19,5 @@ public interface LargeScreenService {
|
||||
|
||||
List<LoadTypeVO> getLoadType(LargeScreenParam largeScreenParam);
|
||||
|
||||
List<DownTimeVO> getTimeCount(LargeScreenParam largeScreenParam);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user