瀏覽代碼

'优化统一告警表-统计接口,修改查询数据库业务逻辑,缩短查询时间'

james 1 年之前
父節點
當前提交
2bda6a8c2c

+ 42 - 20
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/BaseAlarmServiceImpl.java

@@ -67,13 +67,21 @@ public class BaseAlarmServiceImpl extends AbstractCrudService<BaseAlarmMapper, B
                 .eq(DmpProductInfo::getTenantId,SecurityUtils.getTenantId());
         List<DmpProductInfo> list1 = dmpProductInfoService.list(queryWrapper);
         if(CollectionUtils.isNotEmpty(list1)){
-            QueryWrapper<DmpDeviceInfo> queryWrapper1 = Wrappers.query();
-            queryWrapper1.select("product_code as productCode","count(*) as count")
-                    .in("service_status",1,2)
-                    .eq("delete_flag",0)
+//            QueryWrapper<DmpDeviceInfo> queryWrapper1 = Wrappers.query();
+//            queryWrapper1.select("product_code as productCode","count(*) as count")
+//                    .in("service_status",1,2)
+//                    .eq("delete_flag",0)
+//                    .eq("tenant_id",SecurityUtils.getTenantId())
+//                    .groupBy("product_code");
+//            List<Map<String,Object>> mapList= dmpDeviceInfoService.listMaps(queryWrapper1);
+
+            List<String> productCodeList = list1.stream().map(s -> s.getProductCode()).collect(Collectors.toList());
+            QueryWrapper<BaseAlarm> queryWrapper2 = Wrappers.query();
+            queryWrapper2.select("product_code as productCode","handle_status as handleStatus","count(*) as count")
+                    .in("product_code",productCodeList)
                     .eq("tenant_id",SecurityUtils.getTenantId())
-                    .groupBy("product_code");
-            List<Map<String,Object>> mapList= dmpDeviceInfoService.listMaps(queryWrapper1);
+                    .groupBy("product_code","handle_status");
+            List<Map<String,Object>> handleStatusList = this.listMaps(queryWrapper2);
 
             for(int i=0;i<list1.size();i++){
                 BaseAlarmResponeVO responeVO = new BaseAlarmResponeVO();
@@ -83,10 +91,24 @@ public class BaseAlarmServiceImpl extends AbstractCrudService<BaseAlarmMapper, B
 
                 //未处理
                 int untreated = 0;
-                untreated = this.count(Wrappers.<BaseAlarm>query().lambda().eq(BaseAlarm::getHandleStatus,0).eq(BaseAlarm::getProductCode,list1.get(i).getProductCode()).eq(BaseAlarm::getTenantId,SecurityUtils.getTenantId()));
+                if(CollectionUtils.isNotEmpty(handleStatusList)){
+                    for(int j=0;j<handleStatusList.size();j++){
+                        if(list1.get(i).getProductCode().equals(handleStatusList.get(j).get("productCode")) && (0 == Integer.parseInt(handleStatusList.get(j).get("handleStatus").toString()))){
+                            untreated = Integer.parseInt(String.valueOf(handleStatusList.get(j).get("count")));
+                            break;
+                        }
+                    }
+                }
                 //已处理
                 int processed = 0;
-                processed = this.count(Wrappers.<BaseAlarm>query().lambda().eq(BaseAlarm::getHandleStatus,1).eq(BaseAlarm::getProductCode,list1.get(i).getProductCode()).eq(BaseAlarm::getTenantId,SecurityUtils.getTenantId()));
+                if(CollectionUtils.isNotEmpty(handleStatusList)){
+                    for(int j=0;j<handleStatusList.size();j++){
+                        if(list1.get(i).getProductCode().equals(handleStatusList.get(j).get("productCode")) && (1 == Integer.parseInt(handleStatusList.get(j).get("handleStatus").toString()))){
+                            processed = Integer.parseInt(String.valueOf(handleStatusList.get(j).get("count")));
+                            break;
+                        }
+                    }
+                }
                 //总数
                 int count = untreated+processed;
                 //处置率
@@ -100,24 +122,24 @@ public class BaseAlarmServiceImpl extends AbstractCrudService<BaseAlarmMapper, B
                 responeVO.setProcessed(processed);
                 responeVO.setProcessRate(processRate);
 
-                //设备总数
-                responeVO.setDeviceCount(0);
-                if(CollectionUtils.isNotEmpty(mapList)){
-                    for(int j=0;j<mapList.size();j++){
-                        if(list1.get(i).getProductCode().equals(mapList.get(j).get("productCode"))){
-                            responeVO.setDeviceCount(Integer.parseInt(String.valueOf(mapList.get(j).get("count"))));
-                            break;
-                        }
-                    }
-                }
+//                //设备总数
+//                responeVO.setDeviceCount(0);
+//                if(CollectionUtils.isNotEmpty(mapList)){
+//                    for(int j=0;j<mapList.size();j++){
+//                        if(list1.get(i).getProductCode().equals(mapList.get(j).get("productCode"))){
+//                            responeVO.setDeviceCount(Integer.parseInt(String.valueOf(mapList.get(j).get("count"))));
+//                            break;
+//                        }
+//                    }
+//                }
 
                 //离线告警统计
                 //离线告警未处理
                 int offLineUntreated = 0;
-                offLineUntreated = this.count(Wrappers.<BaseAlarm>query().lambda().eq(BaseAlarm::getHandleStatus,0).eq(BaseAlarm::getAlarmType,"lx-20230700000000000").eq(BaseAlarm::getProductCode,list1.get(i).getProductCode()).eq(BaseAlarm::getTenantId,SecurityUtils.getTenantId()));
+//                offLineUntreated = this.count(Wrappers.<BaseAlarm>query().lambda().eq(BaseAlarm::getHandleStatus,0).eq(BaseAlarm::getAlarmType,"001").eq(BaseAlarm::getProductCode,list1.get(i).getProductCode()).eq(BaseAlarm::getTenantId,SecurityUtils.getTenantId()));
                 //离线告警已处理
                 int offLineProcessed = 0;
-                offLineProcessed = this.count(Wrappers.<BaseAlarm>query().lambda().eq(BaseAlarm::getHandleStatus,1).eq(BaseAlarm::getAlarmType,"lx-20230700000000000").eq(BaseAlarm::getProductCode,list1.get(i).getProductCode()).eq(BaseAlarm::getTenantId,SecurityUtils.getTenantId()));
+//                offLineProcessed = this.count(Wrappers.<BaseAlarm>query().lambda().eq(BaseAlarm::getHandleStatus,1).eq(BaseAlarm::getAlarmType,"001").eq(BaseAlarm::getProductCode,list1.get(i).getProductCode()).eq(BaseAlarm::getTenantId,SecurityUtils.getTenantId()));
                 //离线告警总数
                 int offLineCount = offLineUntreated+offLineProcessed;
                 //离线告警处置率

+ 2 - 2
service-iot/service-iot-biz/src/main/resources/bootstrap.yml

@@ -14,10 +14,10 @@ spring:
     nacos:
       discovery:
         # 服务注册地址
-        server-addr: usky-cloud-nacos:8848
+        server-addr: 172.16.120.165:8848
       config:
         # 配置中心地址
-        server-addr: usky-cloud-nacos:8848
+        server-addr: 172.16.120.165:8848
         # 配置文件格式
         file-extension: yml
         # 共享配置