|
@@ -0,0 +1,222 @@
|
|
|
+package com.usky.fire.service.impl;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
+import com.usky.common.core.bean.CommonPage;
|
|
|
+import com.usky.common.mybatis.core.AbstractCrudService;
|
|
|
+import com.usky.common.security.utils.SecurityUtils;
|
|
|
+import com.usky.fire.domain.AlarmDetector;
|
|
|
+import com.usky.fire.mapper.AlarmDetectorMapper;
|
|
|
+import com.usky.fire.service.AlarmDetectorService;
|
|
|
+import com.usky.fire.service.util.OnlineMethod;
|
|
|
+import com.usky.fire.service.vo.AlarmDetectorVo;
|
|
|
+import com.usky.fire.service.vo.AlarmFireStatisticalVo;
|
|
|
+import com.usky.system.model.LoginUser;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+/**
|
|
|
+ * <p>
|
|
|
+ * 独立式无线探测器告警 服务实现类
|
|
|
+ * </p>
|
|
|
+ *
|
|
|
+ * @author JCB
|
|
|
+ * @since 2022-08-08
|
|
|
+ */
|
|
|
+@Service
|
|
|
+public class AlarmDetectorServiceImpl extends AbstractCrudService<AlarmDetectorMapper, AlarmDetector> implements AlarmDetectorService {
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public CommonPage<AlarmDetectorVo> alarmDetectorLowerList(Integer handlingStatus, String startDate, String endDate,
|
|
|
+ Integer pageNum, Integer pageSize, Integer systemType) {
|
|
|
+ DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
+ String userType = null;
|
|
|
+ LoginUser loginUser = SecurityUtils.getLoginUser();
|
|
|
+ if (loginUser != null && !"".equals(loginUser)) {
|
|
|
+ userType = loginUser.getUserType();
|
|
|
+ }
|
|
|
+ //缺少维保单位部分代码
|
|
|
+ List<String> devcieCodeList = new ArrayList<>();
|
|
|
+ CommonPage<AlarmDetector> alarmDetectorList = this.alarDetectorList(devcieCodeList, handlingStatus, startDate, endDate, pageNum, pageSize, systemType);
|
|
|
+ List<AlarmDetectorVo> list = new ArrayList<>();
|
|
|
+ for (int i = 0; i < alarmDetectorList.getRecords().size(); i++) {
|
|
|
+ AlarmDetectorVo alarmDetectorVo = new AlarmDetectorVo();
|
|
|
+ alarmDetectorVo.setId(alarmDetectorList.getRecords().get(i).getId());
|
|
|
+ alarmDetectorVo.setDataSources(alarmDetectorList.getRecords().get(i).getDataSources());
|
|
|
+ alarmDetectorVo.setDeviceCode(alarmDetectorList.getRecords().get(i).getDeviceCode());
|
|
|
+ alarmDetectorVo.setDataTime(df.format(alarmDetectorList.getRecords().get(i).getDataTime()));
|
|
|
+ alarmDetectorVo.setDeviceStatus(alarmDetectorList.getRecords().get(i).getDeviceStatus());
|
|
|
+ alarmDetectorVo.setAddress(alarmDetectorList.getRecords().get(i).getAddress());
|
|
|
+ alarmDetectorVo.setSystemType(alarmDetectorList.getRecords().get(i).getSystemType());
|
|
|
+ alarmDetectorVo.setAlarmType(alarmDetectorList.getRecords().get(i).getAlarmType());
|
|
|
+ alarmDetectorVo.setBatteryLevel(alarmDetectorList.getRecords().get(i).getBatteryLevel());
|
|
|
+ alarmDetectorVo.setSignalIntensity(alarmDetectorList.getRecords().get(i).getSignalIntensity());
|
|
|
+ alarmDetectorVo.setAlarmValue(alarmDetectorList.getRecords().get(i).getAlarmValue());
|
|
|
+ alarmDetectorVo.setHandler(alarmDetectorList.getRecords().get(i).getHandler());
|
|
|
+ if (alarmDetectorList.getRecords().get(i).getHandlingTime() != null) {
|
|
|
+ alarmDetectorVo.setHandlingTime(df.format(alarmDetectorList.getRecords().get(i).getHandlingTime()));
|
|
|
+ } else {
|
|
|
+ alarmDetectorVo.setHandlingTime(null);
|
|
|
+ }
|
|
|
+ alarmDetectorVo.setHandlingContent(alarmDetectorList.getRecords().get(i).getHandlingContent());
|
|
|
+ alarmDetectorVo.setHandlerPhone(alarmDetectorList.getRecords().get(i).getHandlerPhone());
|
|
|
+ alarmDetectorVo.setHandlingStatus(alarmDetectorList.getRecords().get(i).getHandlingStatus());
|
|
|
+ alarmDetectorVo.setFalseAlarm(alarmDetectorList.getRecords().get(i).getFalseAlarm());
|
|
|
+ alarmDetectorVo.setSitePhoto(alarmDetectorList.getRecords().get(i).getSitePhoto());
|
|
|
+ alarmDetectorVo.setCompanyName("未定义单位表");
|
|
|
+ alarmDetectorVo.setAlarmConten("未定义内容");
|
|
|
+ list.add(alarmDetectorVo);
|
|
|
+ }
|
|
|
+ return new CommonPage<>(list, alarmDetectorList.getTotal(), pageSize, pageNum);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Map<String, Object> detectorStatistics(Integer systemType) {
|
|
|
+ String userType = null;
|
|
|
+ LoginUser loginUser = SecurityUtils.getLoginUser();
|
|
|
+ if (loginUser != null && !"".equals(loginUser)) {
|
|
|
+ userType = loginUser.getUserType();
|
|
|
+ }
|
|
|
+ //缺少维保单位部分代码
|
|
|
+ List<String> devcieCodeList = new ArrayList<>();
|
|
|
+
|
|
|
+ int untreated = this.detectorCount(devcieCodeList, 0, systemType);
|
|
|
+ int processed = this.detectorCount(devcieCodeList, 1, systemType);
|
|
|
+// String disposalRate = processed / (untreated + processed) + "%";
|
|
|
+ Integer count = untreated + processed;
|
|
|
+ String disposalRate = OnlineMethod.myPercent(processed, count);
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
+ map.put("untreated", untreated);//告警未处理数
|
|
|
+ map.put("processed", processed);//告警未处理数
|
|
|
+ map.put("disposalRate", disposalRate);//告警处理率
|
|
|
+ map.put("alarmCount", count);//告警总数
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Map<String, Object> detectorStatisticalChart(Integer systemType, String startDate, String endDate) {
|
|
|
+ String userType = null;
|
|
|
+ LoginUser loginUser = SecurityUtils.getLoginUser();
|
|
|
+ if (loginUser != null && !"".equals(loginUser)) {
|
|
|
+ userType = loginUser.getUserType();
|
|
|
+ }
|
|
|
+ //缺少维保单位部分代码
|
|
|
+ List<String> devcieCodeList = new ArrayList<>();
|
|
|
+ List<AlarmFireStatisticalVo> list = baseMapper.selectAlarmDetectorStatistical(devcieCodeList, systemType, startDate, endDate);
|
|
|
+ List<Integer> alarmCountList = new ArrayList<>();
|
|
|
+ List<Integer> handleCountList = new ArrayList<>();
|
|
|
+ List<String> alarmTimeList = new ArrayList<>();
|
|
|
+ List<String> handleRateList = new ArrayList<>();
|
|
|
+ for (int i = 0; i < list.size(); i++) {
|
|
|
+ alarmCountList.add(list.get(i).getCount());
|
|
|
+ handleCountList.add(list.get(i).getSum());
|
|
|
+ alarmTimeList.add(list.get(i).getAlarmTime());
|
|
|
+ handleRateList.add(OnlineMethod.myPercent(list.get(i).getSum(), list.get(i).getCount()));
|
|
|
+ }
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
+ map.put("alarmCountList", alarmCountList);//告警总数
|
|
|
+ map.put("handleCountList", handleCountList);//告警处理数量
|
|
|
+ map.put("alarmTimeList", alarmTimeList);//告警日期
|
|
|
+ map.put("handleRateList", handleRateList);//告警处置占比
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void updateAlarmDetector(AlarmDetector alarmDetector) {
|
|
|
+ alarmDetector.setHandler(SecurityUtils.getUsername());
|
|
|
+ alarmDetector.setHandlingTime(LocalDateTime.now());
|
|
|
+ alarmDetector.setHandlingStatus(1);
|
|
|
+ this.updateById(alarmDetector);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<AlarmDetectorVo> alarmDetectorLowerListExport(Integer handlingStatus, String startDate, String endDate, Integer systemType) {
|
|
|
+ DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
+ String userType = null;
|
|
|
+ LoginUser loginUser = SecurityUtils.getLoginUser();
|
|
|
+ if (loginUser != null && !"".equals(loginUser)) {
|
|
|
+ userType = loginUser.getUserType();
|
|
|
+ }
|
|
|
+ //缺少维保单位部分代码
|
|
|
+ List<String> devcieCodeList = new ArrayList<>();
|
|
|
+ CommonPage<AlarmDetector> alarmDetectorList = this.alarDetectorList(devcieCodeList, handlingStatus, startDate, endDate, 0, 0, systemType);
|
|
|
+ List<AlarmDetectorVo> list = new ArrayList<>();
|
|
|
+ for (int i = 0; i < alarmDetectorList.getRecords().size(); i++) {
|
|
|
+ AlarmDetectorVo alarmDetectorVo = new AlarmDetectorVo();
|
|
|
+ alarmDetectorVo.setId(alarmDetectorList.getRecords().get(i).getId());
|
|
|
+ alarmDetectorVo.setDataSources(alarmDetectorList.getRecords().get(i).getDataSources());
|
|
|
+ alarmDetectorVo.setDeviceCode(alarmDetectorList.getRecords().get(i).getDeviceCode());
|
|
|
+ alarmDetectorVo.setDataTime(df.format(alarmDetectorList.getRecords().get(i).getDataTime()));
|
|
|
+ alarmDetectorVo.setDeviceStatus(alarmDetectorList.getRecords().get(i).getDeviceStatus());
|
|
|
+ alarmDetectorVo.setAddress(alarmDetectorList.getRecords().get(i).getAddress());
|
|
|
+ alarmDetectorVo.setSystemType(alarmDetectorList.getRecords().get(i).getSystemType());
|
|
|
+ alarmDetectorVo.setAlarmType(alarmDetectorList.getRecords().get(i).getAlarmType());
|
|
|
+ alarmDetectorVo.setBatteryLevel(alarmDetectorList.getRecords().get(i).getBatteryLevel());
|
|
|
+ alarmDetectorVo.setSignalIntensity(alarmDetectorList.getRecords().get(i).getSignalIntensity());
|
|
|
+ alarmDetectorVo.setAlarmValue(alarmDetectorList.getRecords().get(i).getAlarmValue());
|
|
|
+ alarmDetectorVo.setHandler(alarmDetectorList.getRecords().get(i).getHandler());
|
|
|
+ if (alarmDetectorList.getRecords().get(i).getHandlingTime() != null) {
|
|
|
+ alarmDetectorVo.setHandlingTime(df.format(alarmDetectorList.getRecords().get(i).getHandlingTime()));
|
|
|
+ } else {
|
|
|
+ alarmDetectorVo.setHandlingTime(null);
|
|
|
+ }
|
|
|
+ alarmDetectorVo.setHandlingContent(alarmDetectorList.getRecords().get(i).getHandlingContent());
|
|
|
+ alarmDetectorVo.setHandlerPhone(alarmDetectorList.getRecords().get(i).getHandlerPhone());
|
|
|
+ alarmDetectorVo.setHandlingStatus(alarmDetectorList.getRecords().get(i).getHandlingStatus());
|
|
|
+ alarmDetectorVo.setFalseAlarm(alarmDetectorList.getRecords().get(i).getFalseAlarm());
|
|
|
+ alarmDetectorVo.setSitePhoto(alarmDetectorList.getRecords().get(i).getSitePhoto());
|
|
|
+ alarmDetectorVo.setCompanyName("未定义单位表");
|
|
|
+ alarmDetectorVo.setAlarmConten("未定义内容");
|
|
|
+ list.add(alarmDetectorVo);
|
|
|
+ }
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Integer detectorCount(List<String> deviceCodeList, Integer handlingStatus, Integer systemType) {
|
|
|
+ LambdaQueryWrapper<AlarmDetector> queryWrapper = Wrappers.lambdaQuery();
|
|
|
+ if (deviceCodeList.size() > 0) {
|
|
|
+ queryWrapper.in(AlarmDetector::getDeviceCode, deviceCodeList);
|
|
|
+ }
|
|
|
+ if (handlingStatus != null) {
|
|
|
+ queryWrapper.eq(AlarmDetector::getHandlingStatus, handlingStatus);
|
|
|
+ }
|
|
|
+ if (systemType != null && systemType != 0) {
|
|
|
+ queryWrapper.eq(AlarmDetector::getSystemType, systemType);
|
|
|
+ }
|
|
|
+ int total = this.count(queryWrapper);
|
|
|
+ return total;
|
|
|
+ }
|
|
|
+
|
|
|
+ public CommonPage<AlarmDetector> alarDetectorList(List<String> deviceCodeList, Integer handlingStatus, String startDate,
|
|
|
+ String endDate, Integer pageNum, Integer pageSize, Integer systemType) {
|
|
|
+ LambdaQueryWrapper<AlarmDetector> queryWrapper = Wrappers.lambdaQuery();
|
|
|
+ if (deviceCodeList.size() > 0) {
|
|
|
+ queryWrapper.in(AlarmDetector::getDeviceCode, deviceCodeList);
|
|
|
+ }
|
|
|
+ if (handlingStatus != null) {
|
|
|
+ queryWrapper.eq(AlarmDetector::getHandlingStatus, handlingStatus);
|
|
|
+ }
|
|
|
+ if (systemType != 0 && systemType != null) {
|
|
|
+ queryWrapper.in(AlarmDetector::getSystemType, systemType);
|
|
|
+ }
|
|
|
+ if (startDate != null && !"".equals(startDate) && endDate != null && !"".equals(endDate)) {
|
|
|
+ queryWrapper.between(AlarmDetector::getDataTime, startDate, endDate);
|
|
|
+ }
|
|
|
+ int total = this.count(queryWrapper);
|
|
|
+ queryWrapper.orderByDesc(AlarmDetector::getId);
|
|
|
+ if (pageNum != null && pageNum != 0 && pageSize != null && pageSize != 0) {
|
|
|
+ Integer startFate = OnlineMethod.getStartFate(pageNum, pageSize);
|
|
|
+ queryWrapper.last("limit " + startFate + "," + pageSize);
|
|
|
+ }
|
|
|
+ List<AlarmDetector> list = this.list(queryWrapper);
|
|
|
+ return new CommonPage<>(list, total, pageSize, pageNum);
|
|
|
+ }
|
|
|
+}
|