Browse Source

Merge branch 'han' of uskycloud/usky-modules into server-165

hanzhengyi 1 year ago
parent
commit
37fae0d370

+ 10 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/BaseAlarmController.java

@@ -100,5 +100,15 @@ public class BaseAlarmController {
         baseAlarmService.add(baseAlarm);
         return ApiResult.success();
     }
+
+    /**
+     * 综合云图-告警统计
+     * @param deptId 部门ID
+     * @return
+     */
+    @GetMapping("/alarmStatistic")
+    public ApiResult<List<Object>> alarmStatistic(@RequestParam(value = "deptId", required = false) Integer deptId){
+        return ApiResult.success(baseAlarmService.alarmStatistic(deptId));
+    }
 }
 

+ 14 - 1
service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/DmpProductInfoController.java

@@ -90,9 +90,22 @@ public class DmpProductInfoController {
      * @param deptId 部门ID
      * @return
      */
-    @PostMapping("deviceStatistic")
+    @GetMapping("deviceStatistic")
     public ApiResult<List<Map<String,Object>>> deviceStatistic(@RequestParam(value = "deptId", required = false) Integer deptId){
         return ApiResult.success(dmpProductInfoService.deviceCollect(deptId));
     }
+
+    /**
+     * 综合云图-设备工况统计接口
+     *
+     * @param deptId 部门ID
+     * @param productCode 产品编码
+     * @return
+     */
+    @GetMapping("deviceStatusStatistic")
+    public ApiResult<List<Object>> deviceStatusStatistic(@RequestParam(value = "deptId", required = false) Integer deptId,
+                                                   @RequestParam(value = "productCode", required = false) String productCode) {
+        return ApiResult.success(dmpProductInfoService.deviceStatusStatistic(deptId,productCode));
+    }
 }
 

+ 6 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/BaseAlarmService.java

@@ -36,4 +36,10 @@ public interface BaseAlarmService extends CrudService<BaseAlarm> {
     boolean add(BaseAlarm baseAlarm);
 
     void status();
+
+    /**
+     * 综合云图-告警统计
+     * @return
+     */
+    List<Object> alarmStatistic(Integer deptId);
 }

+ 6 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/DmpProductInfoService.java

@@ -36,4 +36,10 @@ public interface DmpProductInfoService extends CrudService<DmpProductInfo> {
      * @return
      */
     List<Map<String,Object>> deviceCollect(Integer deptId);
+
+    /**
+     * 综合云图-设备工况统计接口
+     * @return
+     */
+    List<Object> deviceStatusStatistic(Integer deptId,String productId);
 }

+ 9 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/config/IntegerUtils.java

@@ -0,0 +1,9 @@
+package com.usky.iot.service.config;
+
+import java.util.Optional;
+
+public class IntegerUtils {
+    public static boolean hasValue(Integer value) {
+        return Optional.ofNullable(value).isPresent();
+    }
+}

+ 64 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/BaseAlarmServiceImpl.java

@@ -22,7 +22,12 @@ import com.usky.iot.service.vo.BaseAlarmResponeVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -636,6 +641,65 @@ public class BaseAlarmServiceImpl extends AbstractCrudService<BaseAlarmMapper, B
 
         }
     }
+
+    @Override
+    public List<Object> alarmStatistic(Integer deptId) {
+        List<Object> list = new ArrayList<>();
+        Map<String, Object> map = new HashMap<>();
+        LocalDateTime now = LocalDateTime.now();
+        LocalDate today = LocalDate.now();
+        LocalDateTime startOfDay = LocalDateTime.of(today, LocalTime.MIN);
+        LocalDateTime startOfYear = now.minusYears(1);
+        QueryWrapper<BaseAlarm> queryWrapper = Wrappers.query();
+        queryWrapper.select("COUNT(alarm_grade=1 or null) as alarmCount","COUNT(alarm_grade!=1 or" +
+                " null) as hiddenCount","COUNT(alarm_grade=1 and handle_status=1 or null) as ahAlarmCount","COUNT" +
+                "(alarm_grade!=1 and handle_status=1 or null) as ahHiddenCount")
+                .between("alarm_time",startOfDay,now);
+        List<Map<String,Object>> alarmStatisticList = this.listMaps(queryWrapper);
+        QueryWrapper<BaseAlarm> queryWrapper1 = Wrappers.query();
+        queryWrapper1.select("COUNT(alarm_grade=1 or null) as alarmCount","COUNT(alarm_grade=1 and handle_status=1 or null) as ahAlarmCount")
+                .between("alarm_time",startOfYear,now);
+        List<Map<String,Object>> alarmStatisticList1 = this.listMaps(queryWrapper1);
+        QueryWrapper<BaseAlarm> queryWrapper2 = Wrappers.query();
+        queryWrapper2.select("COUNT(alarm_grade=1 and handle_status=0 or null) as alarmCount","COUNT(alarm_grade=1 " +
+                "and alarm_type='111' or null) as fireAlarmCount","COUNT(alarm_grade!=1 and handle_status=0 or null) " +
+                "as hiddenCount");
+        List<Map<String,Object>> alarmStatisticList2 = this.listMaps(queryWrapper2);
+        BigDecimal ahAlarmCountBig = new BigDecimal(Integer.valueOf(alarmStatisticList.get(0).get("ahAlarmCount").toString()));
+        BigDecimal temp = new BigDecimal(Integer.valueOf(alarmStatisticList.get(0).get("alarmCount").toString()));
+        if (Integer.valueOf(alarmStatisticList.get(0).get("alarmCount").toString()).equals(0)){
+            map.put("ahAlarmCountBig", 0);
+        }else {
+            ahAlarmCountBig = ahAlarmCountBig.divide(temp,2, RoundingMode.HALF_UP);
+            map.put("ahAlarmCountBig", ahAlarmCountBig);
+        }
+        BigDecimal ahHiddenCountBig = new BigDecimal(Integer.valueOf(alarmStatisticList.get(0).get("ahHiddenCount").toString()));
+        BigDecimal temp1 = new BigDecimal(Integer.valueOf(alarmStatisticList.get(0).get("hiddenCount").toString()));
+        if (Integer.valueOf(alarmStatisticList.get(0).get("hiddenCount").toString()).equals(0)){
+            map.put("ahHiddenDayCountBig", 0);
+        }else {
+            ahHiddenCountBig = ahHiddenCountBig.divide(temp1,2, RoundingMode.HALF_UP);
+            map.put("ahHiddenDayCountBig", ahHiddenCountBig);
+        }
+
+        BigDecimal ahAlarmYearCountBig = new BigDecimal(Integer.valueOf(alarmStatisticList1.get(0).get("ahAlarmCount").toString()));
+        BigDecimal temp2 = new BigDecimal(Integer.valueOf(alarmStatisticList1.get(0).get("alarmCount").toString()));
+        if (Integer.valueOf(alarmStatisticList1.get(0).get("alarmCount").toString()).equals(0)){
+            map.put("ahAlarmYearCountBig", 0);
+        }else {
+            ahAlarmYearCountBig = ahAlarmYearCountBig.divide(temp2,2, RoundingMode.HALF_UP);
+            map.put("ahAlarmYearCountBig", ahAlarmYearCountBig);
+        }
+        map.put("alarmDayCount", Integer.valueOf(alarmStatisticList.get(0).get("alarmCount").toString()));
+        map.put("hiddenDayCount", Integer.valueOf(alarmStatisticList.get(0).get("hiddenCount").toString()));
+        map.put("ahHiddenDayCount", Integer.valueOf(alarmStatisticList.get(0).get("ahHiddenCount").toString()));
+        map.put("alarmYearCount", Integer.valueOf(alarmStatisticList1.get(0).get("alarmCount").toString()));
+        map.put("uhAlarmCount", Integer.valueOf(alarmStatisticList2.get(0).get("alarmCount").toString()));
+        map.put("fireAlarmCount", Integer.valueOf(alarmStatisticList2.get(0).get("fireAlarmCount").toString()));
+        map.put("uhHiddenCount", Integer.valueOf(alarmStatisticList2.get(0).get("hiddenCount").toString()));
+        list.add(map);
+        return list;
+    }
 }
 
 

+ 44 - 1
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/DmpProductInfoServiceImpl.java

@@ -19,11 +19,13 @@ import com.usky.common.security.utils.SecurityUtils;
 import com.usky.iot.domain.*;
 import com.usky.iot.mapper.DmpProductInfoMapper;
 import com.usky.iot.service.*;
+import com.usky.iot.service.config.IntegerUtils;
 import com.usky.iot.service.vo.DmpProductInfoRequest;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.time.LocalDateTime;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -267,7 +269,7 @@ public class DmpProductInfoServiceImpl extends AbstractCrudService<DmpProductInf
         List<Map<String, Object>> list = new ArrayList<>();
         if (CollectionUtil.isNotEmpty(productIds2)){
             QueryWrapper<DmpDeviceStatus> query1 = Wrappers.query();
-            query1.select("product_id as productId","count(*) as count","count(device_status != 1) as " +
+            query1.select("product_id as productId","count(*) as count","count(device_status != 1 or null) as " +
                     "faultCount")
                     .in("product_id",productIds2)
                     .groupBy("product_id");
@@ -282,4 +284,45 @@ public class DmpProductInfoServiceImpl extends AbstractCrudService<DmpProductInf
         }
         return list;
     }
+
+    @Override
+    public List<Object> deviceStatusStatistic(Integer deptId,String productCode) {
+        List<Object> list2 = new ArrayList<>();
+        QueryWrapper<DmpDeviceStatus> query = Wrappers.query();
+        query.select("count(*) as count","COUNT(device_status=1 or null) as " +
+                "onCount","COUNT(device_status=2 or null) as offCount")
+                .eq(StringUtils.isNotBlank(productCode),"product_code",productCode);
+        List<Map<String, Object>> list = dmpDeviceStatusService.listMaps(query);
+        QueryWrapper<DmpDeviceInfo> query1 = Wrappers.query();
+        query1.select("count(*) as count","COUNT(service_status=1 or null) as notActiveCount")
+                .eq(StringUtils.isNotBlank(productCode),"product_code",productCode);
+        List<Map<String, Object>> list1 = dmpDeviceInfoService.listMaps(query1);
+        Map<String, Object> map = new HashMap<>();
+        if (Integer.valueOf(list.get(0).get("offCount").toString()).equals(0)){
+            map.put("count", 0);
+            map.put("onCount", 0);
+            map.put("offCount", 0);
+            map.put("notActiveCount", 0);
+            map.put("onCountBig", 0);
+            map.put("offCountBig", 0);
+            map.put("notActiveCountBig", 0);
+        }else {
+            BigDecimal onCountBig = new BigDecimal(Integer.valueOf(list.get(0).get("onCount").toString()));
+            BigDecimal temp = new BigDecimal(Integer.valueOf(list.get(0).get("count").toString()));
+            onCountBig = onCountBig.divide(temp,2,RoundingMode.HALF_UP);
+            BigDecimal offCountBig = new BigDecimal(Integer.valueOf(list.get(0).get("offCount").toString()));
+            offCountBig = offCountBig.divide(temp,2,RoundingMode.HALF_UP);
+            BigDecimal notActiveCountBig = new BigDecimal(Integer.valueOf(list1.get(0).get("notActiveCount").toString()));
+            notActiveCountBig = notActiveCountBig.divide(temp,2,RoundingMode.HALF_UP);
+            map.put("count", Integer.valueOf(list.get(0).get("count").toString()));
+            map.put("onCount", Integer.valueOf(list.get(0).get("onCount").toString()));
+            map.put("offCount", Integer.valueOf(list.get(0).get("offCount").toString()));
+            map.put("notActiveCount", Integer.valueOf(list1.get(0).get("notActiveCount").toString()));
+            map.put("onCountBig", onCountBig);
+            map.put("offCountBig", offCountBig);
+            map.put("notActiveCountBig", notActiveCountBig);
+        }
+        list2.add(map);
+        return list2;
+    }
 }