Sfoglia il codice sorgente

2023-10-25 报警通知添加电话报警,小程序预案和气瓶报警整合。

chaiyunlong 2 anni fa
parent
commit
88047c049d

+ 1 - 1
zd-api/zd-laboratory-api/src/main/java/com/zd/laboratory/api/feign/RemoteLaboratoryService.java

@@ -245,7 +245,7 @@ public interface RemoteLaboratoryService {
 
     @ApiOperation(value = "查询安全预警列表 (管理端)")
     @GetMapping("/plan/log/app/subBySensorList")
-    public TableDataInfo getSafeWarnList(Map riskPlanAbnormalLog);
+    public ResultData getSafeWarnList(Map riskPlanAbnormalLog);
 
 
     /**

+ 2 - 5
zd-api/zd-laboratory-api/src/main/java/com/zd/laboratory/api/feign/fallback/RemoteLaboratoryFallbackFactory.java

@@ -231,11 +231,8 @@ public class RemoteLaboratoryFallbackFactory implements FallbackFactory<RemoteLa
             }
 
             @Override
-            public TableDataInfo getSafeWarnList(Map riskPlanAbnormalLog) {
-                TableDataInfo tableDataInfo = new TableDataInfo();
-                tableDataInfo.setMsg("查询安全报警记录列表失败:" + cause.getMessage());
-                tableDataInfo.setCode(500);
-                return tableDataInfo;
+            public ResultData getSafeWarnList(Map riskPlanAbnormalLog) {
+                return ResultData.fail("预案查询失败!"+ cause.getMessage());
             }
 
             @Override

+ 18 - 0
zd-modules/zd-airbottle/src/main/java/com/zd/airbottle/service/impl/AlarmRecordServiceImpl.java

@@ -566,6 +566,24 @@ public class AlarmRecordServiceImpl implements IAlarmRecordService {
                     }, 30, TimeUnit.SECONDS);
                 }
             }
+
+            //电话通知
+            if (illegalRemoval.contains("5")) {
+                String[] strings = Stream.of(phones.toString().split(",")).filter(a -> StrUtil.isNotBlank(a)).collect(Collectors.joining(",")).split(",");
+                if (strings != null) {
+                    //获取人员电话信息
+                    ResultData<List<UserPhoneInfo>> listResultData = laboratoryService.selectAdminAndSafeAdminById(warningNoticeLogDto.getSubId());
+                    if(HttpStatus.SUCCESS != listResultData.getCode()){
+                        log.info("获取实验室管理员和安全员信息失败!{}",JSON.toJSONString(listResultData));
+                    }
+                    List<UserPhoneInfo> userPhoneInfoList = listResultData.getData();
+                    AlarmEntrty alarmEntrty = new AlarmEntrty(Routes.NoticePush, strings, SendTypes.Call.name(), text);
+                    alarmEntrty.setLogId(logId);
+                    alarmEntrty.setUserPhoneInfo(userPhoneInfoList);
+                    remoteAlarmService.send(alarmEntrty);
+                    log.info("气瓶违规带离打电话消息推送完成!");
+                }
+            }
         }
 
         return 0;

+ 3 - 2
zd-modules/zd-base/src/main/java/com/zd/base/app/controller/LabApi.java

@@ -5,6 +5,7 @@ import com.zd.laboratory.api.entity.LabSubjectControllerVO;
 import com.zd.laboratory.api.feign.RemoteLaboratoryService;
 import com.zd.laboratory.api.feign.RemoteStudentsService;
 import com.zd.model.domain.R;
+import com.zd.model.domain.ResultData;
 import com.zd.model.page.TableDataInfo;
 import com.zd.system.api.entity.LabStudentsInfo;
 import io.swagger.annotations.Api;
@@ -256,14 +257,14 @@ public class LabApi {
 
     @ApiOperation(value = "查询安全预警列表 (管理端)")
     @GetMapping("/getSafeWarnList")
-    public TableDataInfo getSafeWarnList(@RequestParam Integer pageNum, @RequestParam Integer pageSize, @RequestParam Integer count, @RequestParam String groupStatus) {
+    public ResultData getSafeWarnList(@RequestParam Integer pageNum, @RequestParam Integer pageSize, @RequestParam Integer count, @RequestParam String groupStatus) {
         Map map = new HashMap(3);
         map.put("appPageNum", pageNum);
         map.put("appPageSize", pageSize);
         map.put("count", count);
         map.put("groupStatus", groupStatus);
 
-        TableDataInfo list = laboratoryService.getSafeWarnList(map);
+        ResultData list = laboratoryService.getSafeWarnList(map);
         return list;
     }
 

+ 3 - 3
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabRiskPlanAbnormalLogController.java

@@ -171,10 +171,10 @@ public class LabRiskPlanAbnormalLogController extends BaseController {
      */
     @RequestMapping("/app/subBySensorList")
     @ApiOperation(value = "小程序查询当前发生的实验室风险异常日志列表")
-    public TableDataInfo subBySensorList(@RequestBody LabRiskPlanAbnormalLogVO labRiskPlanAbnormalLogVo) {
+    public ResultData subBySensorList(@RequestBody LabRiskPlanAbnormalLogVO labRiskPlanAbnormalLogVo) {
         startPage(labRiskPlanAbnormalLogVo.getAppPageNum(),labRiskPlanAbnormalLogVo.getAppPageSize());
-        List<SubDiyAppVO> list = labRiskPlanAbnormalLogService.selectLabRiskPlanAppList(labRiskPlanAbnormalLogVo);
-        return getDataTable(list);
+        Map<String,Object> allMap = labRiskPlanAbnormalLogService.selectLabRiskPlanAppList(labRiskPlanAbnormalLogVo);
+        return ResultData.success(allMap);
     }
 
 

+ 10 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/domain/SubDiyAppVO.java

@@ -44,6 +44,8 @@ public class SubDiyAppVO {
 
     private Long riskPlanLogId;
 
+    private Long subjectId;
+
     public void setSubDiyVo(SubDiyVO subDiyVo) {
         this.subDiyVo = subDiyVo;
     }
@@ -136,4 +138,12 @@ public class SubDiyAppVO {
     public void setSubDiyNewVO(SubDiyVO subDiyNewVO) {
         this.subDiyNewVO = subDiyNewVO;
     }
+
+    public Long getSubjectId() {
+        return subjectId;
+    }
+
+    public void setSubjectId(Long subjectId) {
+        this.subjectId = subjectId;
+    }
 }

+ 1 - 1
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/ILabRiskPlanAbnormalLogService.java

@@ -87,7 +87,7 @@ public interface ILabRiskPlanAbnormalLogService {
      * @param labRiskPlanAbnormalLogVo 风险异常日志
      * @return 风险异常日志集合
      */
-    public List<SubDiyAppVO> selectLabRiskPlanAppList(LabRiskPlanAbnormalLogVO labRiskPlanAbnormalLogVo);
+    public Map<String,Object> selectLabRiskPlanAppList(LabRiskPlanAbnormalLogVO labRiskPlanAbnormalLogVo);
 
     /**
      * 小程序查询当前发生的实验室风险异常日志统计

+ 61 - 3
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabRiskPlanAbnormalLogServiceImpl.java

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.zd.algorithm.api.alarm.entity.AlarmLog;
 import com.zd.common.core.annotation.DataScope;
+import com.zd.common.core.redis.RedisService;
 import com.zd.common.core.utils.DateUtils;
 import com.zd.common.core.utils.SecurityUtils;
 import com.zd.laboratory.api.entity.SensorFunctionStatus;
@@ -14,6 +15,7 @@ import com.zd.laboratory.mapper.LabAbnormalMapper;
 import com.zd.laboratory.mapper.LabPhotoNoteMapper;
 import com.zd.laboratory.mapper.LabRiskPlanAbnormalLogMapper;
 import com.zd.laboratory.service.ILabRiskPlanAbnormalLogService;
+import com.zd.model.constant.BaseConstants;
 import com.zd.model.domain.per.PerPrefix;
 import com.zd.model.entity.SubQueryConfig;
 import com.zd.model.enums.HardwareTypeEnum;
@@ -23,6 +25,7 @@ import org.springframework.util.LinkedMultiValueMap;
 
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.concurrent.atomic.LongAdder;
 
 /**
  * 风险异常日志Service业务层处理
@@ -43,6 +46,9 @@ public class LabRiskPlanAbnormalLogServiceImpl implements ILabRiskPlanAbnormalLo
     @Autowired
     public HardwareFunctionStatusConfig hardwareFunctionStatusConfig;
 
+    @Autowired
+    private RedisService redisService;
+
     /**
      * 查询风险异常日志
      *
@@ -271,7 +277,7 @@ public class LabRiskPlanAbnormalLogServiceImpl implements ILabRiskPlanAbnormalLo
      */
     @Override
     @DataScope(deptAlias = "t", userAlias = "t", subAdmin = true)
-    public List<SubDiyAppVO> selectLabRiskPlanAppList(LabRiskPlanAbnormalLogVO labRiskPlanAbnormalLogVo) {
+    public Map<String,Object> selectLabRiskPlanAppList(LabRiskPlanAbnormalLogVO labRiskPlanAbnormalLogVo) {
         if(labRiskPlanAbnormalLogVo.getCount()==0){
             Date d = new Date();
             SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
@@ -292,6 +298,8 @@ public class LabRiskPlanAbnormalLogServiceImpl implements ILabRiskPlanAbnormalLo
                     riskPlanMap.add(a.getGroupId(),a);
                 });
 
+        Map<String,Object> allMap = new HashMap <>();
+        LongAdder longAdder = new LongAdder();
         List<SubDiyAppVO> subSensorList = new ArrayList();
         Optional.ofNullable(riskPlanMap).filter(a->a.size()>0).ifPresent(a->{
                     a.entrySet().forEach(b->{
@@ -324,7 +332,7 @@ public class LabRiskPlanAbnormalLogServiceImpl implements ILabRiskPlanAbnormalLo
                         }
 //                        appVo.setSubDiyVo(Optional.ofNullable(subDiy).filter(p->p.size()>0).orElseGet(Collections::emptyList).get(0));
                         appVo.setTodayHappenCount(todayHappenCount);
-
+                        longAdder.add(todayHappenCount);
                         //加入实验室信息
                         if(riskPlanLogList.size()>0){
                             LabSubject subject = new LabSubject();
@@ -334,12 +342,62 @@ public class LabRiskPlanAbnormalLogServiceImpl implements ILabRiskPlanAbnormalLo
                                 appVo.setSubDiyNewVO(subDiyVOList.get(0));
                             }
                         }
+                        appVo.setSubjectId(subjectId);
                         subSensorList.add(appVo);
 
                     });
                 }
         );
-        return subSensorList;
+        //todo 这里尝试组合预案和气瓶预警
+        Collection <String> cllKey = redisService.keys(BaseConstants.BEACON_MATE_NOTICE + "*");
+        for(String key:cllKey){
+            List <Map<String,Object>> beaconNoticeList = redisService.getCacheObject(key);
+            for(Map<String,Object> noticeMap : beaconNoticeList){
+                Boolean flag = Boolean.TRUE;
+                for(SubDiyAppVO subSensor : subSensorList){
+                    Long subId = Long.parseLong(noticeMap.get("subId")+"");
+                    if(subId.longValue() == subSensor.getSubjectId().longValue()){
+                        flag = Boolean.FALSE;
+                        subSensor.getSensorSet().add(noticeMap.get("gasName")+"气瓶非法带离!");
+                        subSensor.setTodayHappenCount(subSensor.getTodayHappenCount()+1);
+                        longAdder.add(1);
+                    }
+                }
+                if(flag){
+                    Set<String> describeSet = new HashSet();
+
+                    SubDiyAppVO appVo = new SubDiyAppVO();
+                    describeSet.add(noticeMap.get("gasName")+"气瓶非法带离!");
+                    Long subjectId = Long.parseLong(noticeMap.get("subId")+"");
+                    SubQueryConfig subQueryConfig = new SubQueryConfig();
+                    subQueryConfig.setDangerLevel(true);
+                    subQueryConfig.setAddr(true);
+                    subQueryConfig.setConversionDictSubName(true);
+                    List<SubDiyVO> subDiy = subQueryManager.querySubs(subQueryConfig,subjectId);
+
+                    appVo.setSensorSet(describeSet);
+                    if(subDiy.size()>0){
+                        appVo.setSubDiyVo(subDiy.get(0));
+                    }
+                    appVo.setTodayHappenCount(todayHappenCount+1);
+                    longAdder.add(1);
+                    //加入实验室信息
+                    if(riskPlanLogList.size()>0){
+                        LabSubject subject = new LabSubject();
+                        subject.setId(subjectId);
+                        List<SubDiyVO> subDiyVOList = subQueryManager.querySubs(subject, SubQueryConfig.subQueryConfigList);
+                        if(subDiyVOList.size()>0){
+                            appVo.setSubDiyNewVO(subDiyVOList.get(0));
+                        }
+                    }
+                    appVo.setSubjectId(subjectId);
+                    subSensorList.add(appVo);
+                }
+            }
+        }
+        allMap.put("list",subSensorList);
+        allMap.put("count",longAdder.sum());
+        return allMap;
     }