|
@@ -1,5 +1,6 @@
|
|
|
package com.huaxu.service.impl;
|
|
|
|
|
|
+import cn.hutool.core.collection.CollectionUtil;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.huaxu.common.StringUtils;
|
|
|
import com.huaxu.dao.OnlineMonitorMapper;
|
|
@@ -10,10 +11,8 @@ import com.huaxu.model.LoginUser;
|
|
|
import com.huaxu.model.Pagination;
|
|
|
import com.huaxu.service.DeviceAttributeSpecsService;
|
|
|
import com.huaxu.service.OnlineMonitorService;
|
|
|
-import com.huaxu.util.ByteArrayUtils;
|
|
|
-import com.huaxu.util.OrgInfoUtil;
|
|
|
-import com.huaxu.util.RedisUtil;
|
|
|
-import com.huaxu.util.UserUtil;
|
|
|
+import com.huaxu.util.*;
|
|
|
+import com.huaxu.vo.AlarmDetailsVo;
|
|
|
import io.swagger.annotations.ApiModelProperty;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
@@ -22,6 +21,11 @@ import javax.annotation.Resource;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.text.DecimalFormat;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
+import java.time.Instant;
|
|
|
+import java.time.LocalDate;
|
|
|
+import java.time.Period;
|
|
|
+import java.time.ZoneId;
|
|
|
+import java.time.temporal.ChronoUnit;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
@@ -871,4 +875,40 @@ public class OnlineMonitorImpl implements OnlineMonitorService {
|
|
|
onlineDataDto.setPermissonType(loginUser.getPermissonType());
|
|
|
return onlineMonitorMapper.selectStateCount(onlineDataDto);
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询场景实时状态数量
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public List<AlarmDetailsVo> selectAlarmStatsInfo(AlarmDetailsQueryDto dto)
|
|
|
+ {
|
|
|
+ List<AlarmDetailsVo> alarmDetailsVos = onlineMonitorMapper.selectAlarmStatsInfo(dto);
|
|
|
+ if (CollectionUtil.isEmpty(alarmDetailsVos)) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ Map<Long, AlarmDetailsVo> dataMap = new HashMap<>();
|
|
|
+ Long sendId = null;
|
|
|
+ long minutes = 0;
|
|
|
+ Date startTime = null;
|
|
|
+ for (AlarmDetailsVo alarmDetails : alarmDetailsVos) {
|
|
|
+ sendId = alarmDetails.getId();
|
|
|
+ AlarmDetailsVo alarmDetailsVo = dataMap.get(sendId);
|
|
|
+ if (alarmDetailsVo == null) {
|
|
|
+ alarmDetailsVo = new AlarmDetailsVo();
|
|
|
+ }
|
|
|
+ if (alarmDetails.getAlarmEndTime() != null){
|
|
|
+ startTime = DatesUtil.parseDate(dto.getStartTime(), "yyyy-MM-dd HH:mm:ss");
|
|
|
+ minutes = DatesUtil.minutesBetween(startTime.after(alarmDetails.getAlarmStartTime()) ? startTime : alarmDetails.getAlarmStartTime(),
|
|
|
+ alarmDetails.getAlarmEndTime());
|
|
|
+ }
|
|
|
+ alarmDetailsVo.setDeviceName(alarmDetails.getDeviceName());
|
|
|
+ alarmDetailsVo.setId(sendId);
|
|
|
+ alarmDetailsVo.setAlarmCount( alarmDetailsVo.getAlarmCount() + 1 );
|
|
|
+ alarmDetailsVo.setAlarmDuration(alarmDetailsVo.getAlarmDuration() + minutes);
|
|
|
+ dataMap.put(sendId, alarmDetailsVo);
|
|
|
+ }
|
|
|
+ return dataMap.values().stream().collect(Collectors.toList());
|
|
|
+ }
|
|
|
+
|
|
|
}
|