Selaa lähdekoodia

'新增统一告警表-统计(白名单)、统一告警表-分页(白名单)接口'

james 1 vuosi sitten
vanhempi
commit
976aefbddc

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

@@ -50,6 +50,26 @@ public class BaseAlarmController {
         return ApiResult.success(baseAlarmService.page(baseAlarmListVO));
     }
 
+    /**
+     * 统计(白名单)
+     * @param baseAlarmRequestVO
+     * @return
+     */
+    @PostMapping("/statistic_notoken")
+    public ApiResult<CommonPage<BaseAlarmResponeVO>> statistic_notoken(@RequestBody BaseAlarmRequestVO baseAlarmRequestVO){
+        return ApiResult.success(baseAlarmService.statistic_notoken(baseAlarmRequestVO));
+    }
+
+    /**
+     * 分页(白名单)
+     * @param baseAlarmListVO
+     * @return
+     */
+    @PostMapping("/page_notoken")
+    public ApiResult<CommonPage<BaseAlarm>> page_notoken(@RequestBody BaseAlarmListVO baseAlarmListVO){
+        return ApiResult.success(baseAlarmService.page_notoken(baseAlarmListVO));
+    }
+
     /**
      * 大屏最新6条告警信息
      * @return

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

@@ -25,6 +25,10 @@ public interface BaseAlarmService extends CrudService<BaseAlarm> {
 
     CommonPage<BaseAlarm> page(BaseAlarmListVO baseAlarmListVO);
 
+    CommonPage<BaseAlarmResponeVO> statistic_notoken(BaseAlarmRequestVO baseAlarmRequestVO);
+
+    CommonPage<BaseAlarm> page_notoken(BaseAlarmListVO baseAlarmListVO);
+
     List<BaseAlarm> getScreenAlarmList();
 
     void update(BaseAlarm baseAlarm);

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

@@ -242,6 +242,181 @@ public class BaseAlarmServiceImpl extends AbstractCrudService<BaseAlarmMapper, B
 
     }
 
+    @Override
+    public CommonPage<BaseAlarmResponeVO> statistic_notoken(BaseAlarmRequestVO baseAlarmRequestVO){
+
+        List<BaseAlarmResponeVO> list = new ArrayList<>();
+
+        LambdaQueryWrapper<DmpProductInfo> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(DmpProductInfo::getDeleteFlag,0)
+                .like(StringUtils.isNotBlank(baseAlarmRequestVO.getProductName()),DmpProductInfo::getProductName,baseAlarmRequestVO.getProductName());
+        List<DmpProductInfo> list1 = dmpProductInfoService.list(queryWrapper);
+        if(CollectionUtils.isNotEmpty(list1)){
+
+            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)
+                    .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();
+                responeVO.setProductCode(list1.get(i).getProductCode());
+                responeVO.setProductName(list1.get(i).getProductName());
+                responeVO.setDeviceType(list1.get(i).getDeviceType());
+
+                //未处理
+                int untreated = 0;
+                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;
+                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;
+                //处置率
+                float processRate = 0;
+                if(count != 0){
+                    processRate = ((float) processed/count)*100;
+                }
+
+                responeVO.setTotal(count);
+                responeVO.setUntreated(untreated);
+                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;
+//                        }
+//                    }
+//                }
+
+                //离线告警统计
+                //离线告警未处理
+                int offLineUntreated = 0;
+//                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,"001").eq(BaseAlarm::getProductCode,list1.get(i).getProductCode()).eq(BaseAlarm::getTenantId,SecurityUtils.getTenantId()));
+                //离线告警总数
+                int offLineCount = offLineUntreated+offLineProcessed;
+                //离线告警处置率
+                float offLineProcessRate = 0;
+                if(offLineCount != 0){
+                    offLineProcessRate = ((float) offLineProcessed/offLineCount)*100;
+                }
+                responeVO.setOffLineUntreated(offLineUntreated);
+                responeVO.setOffLineProcessed(offLineProcessed);
+                responeVO.setOffLineProcessRate(offLineProcessRate);
+
+                list.add(responeVO);
+            }
+        }
+
+        int total = 0;
+        if(list1.size()>0){
+            total = list1.size();
+        }
+        int current = 0;
+        Integer pageNum = baseAlarmRequestVO.getCurrent();
+        Integer pageSize = baseAlarmRequestVO.getSize();
+        if(pageNum != null && pageSize >0){
+            current = (pageNum-1)*pageSize;
+        }
+        List<BaseAlarmResponeVO> records = list.stream().skip(current).limit(pageSize).collect(Collectors.toList());
+
+        return new CommonPage<BaseAlarmResponeVO>(records,total,pageSize,pageNum);
+    }
+
+    public CommonPage<BaseAlarm> page_notoken(BaseAlarmListVO baseAlarmListVO){
+        List<BaseAlarm> list = new ArrayList<>();
+
+        LambdaQueryWrapper<BaseAlarm> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper
+                .eq(StringUtils.isNotBlank(baseAlarmListVO.getProductCode()),BaseAlarm::getProductCode,baseAlarmListVO.getProductCode())
+                .eq(StringUtils.isNotBlank(baseAlarmListVO.getAlarmType()),BaseAlarm::getAlarmType,baseAlarmListVO.getAlarmType())
+                .eq(null != baseAlarmListVO.getHandleStatus(),BaseAlarm::getHandleStatus,baseAlarmListVO.getHandleStatus())
+                .between(StringUtils.isNotBlank(baseAlarmListVO.getStartTime()) && StringUtils.isNotBlank(baseAlarmListVO.getEndTime()),BaseAlarm::getAlarmTime,baseAlarmListVO.getStartTime(),baseAlarmListVO.getEndTime())
+                .orderByDesc(BaseAlarm::getId);
+        List<BaseAlarm> records = this.list(queryWrapper);
+        if(records.size()>0){
+            List<String> devList = new ArrayList<>();
+            for(int i=0;i<records.size();i++){
+                devList.add(records.get(i).getDeviceId());
+            }
+
+            if(devList.size() > 0){
+                LambdaQueryWrapper<DmpDeviceInfo> queryWrapper1 = Wrappers.lambdaQuery();
+                queryWrapper1.in(DmpDeviceInfo::getDeviceId,devList)
+                        .eq(DmpDeviceInfo::getDeleteFlag,0);
+                List<DmpDeviceInfo> deviceInfo = dmpDeviceInfoService.list(queryWrapper1);
+                if(CollectionUtils.isNotEmpty(deviceInfo)){
+                    for(int i=0;i<records.size();i++){
+                        for(int j=0;j<deviceInfo.size();j++){
+                            if(records.get(i).getDeviceId().equals(deviceInfo.get(j).getDeviceId())){
+                                records.get(i).setDeviceName(deviceInfo.get(j).getDeviceName());
+                                continue;
+                            }
+                        }
+
+                    }
+                }
+            }
+
+            for(int i=0;i<records.size();i++){
+                BaseAlarmType baseAlarmType = baseMapper.getAlarmTypeOne(records.get(i).getAlarmType());
+                if(baseAlarmType != null){
+                    records.get(i).setTypeImg(baseAlarmType.getTypeImg());
+                }
+
+            }
+        }
+
+        if(StringUtils.isNotBlank(baseAlarmListVO.getDeviceName())){
+            list = records.stream().filter(e -> baseAlarmListVO.getDeviceName().equals(e.getDeviceName())).collect(Collectors.toList());
+        }else {
+            if(records.size()>0){
+                for(int k=0;k<records.size();k++){
+                    list.add(records.get(k));
+                }
+            }
+
+        }
+        int total = 0;
+        if(list.size()>0){
+            total = list.size();
+        }
+        int current = 0;
+        Integer pageNum = baseAlarmListVO.getCurrent();
+        Integer pageSize = baseAlarmListVO.getSize();
+        if(pageNum != null && pageSize >0){
+            current = (pageNum-1)*pageSize;
+        }
+        List<BaseAlarm> info = list.stream().sorted(Comparator.comparing(BaseAlarm::getId,Comparator.reverseOrder())).skip(current).limit(pageSize).collect(Collectors.toList());
+
+        return new CommonPage<BaseAlarm>(info,total,pageSize,pageNum);
+
+    }
+
     public List<BaseAlarm> getScreenAlarmList(){
 
         LambdaQueryWrapper<BaseAlarm> queryWrapper = Wrappers.lambdaQuery();