Quellcode durchsuchen

挂墙终端后端接口修改

xujie vor 1 Jahr
Ursprung
Commit
e5ca67a981

+ 20 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/mapper/CoreNoticeRuleItemMapper.java

@@ -0,0 +1,20 @@
+package com.xunmei.iot.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.xunmei.common.core.domain.notice.CoreNoticeRuleItem;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author xujie
+ * @since 2024-09-19
+ */
+public interface CoreNoticeRuleItemMapper extends BaseMapper<CoreNoticeRuleItem> {
+
+    List<String> getNoticeProductTypesByUser(@Param("roleIds") List<String> roleIds,@Param("orgId") Long orgId,@Param("userId") Long userId);
+}

+ 20 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/ICoreNoticeRuleItemService.java

@@ -0,0 +1,20 @@
+package com.xunmei.iot.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.xunmei.common.core.domain.notice.CoreNoticeRuleItem;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author xujie
+ * @since 2024-09-19
+ */
+public interface ICoreNoticeRuleItemService extends IService<CoreNoticeRuleItem> {
+
+    List<String> getNoticeProductTypesByUser(List<String> roleIds,Long orgId,Long userId);
+
+}

+ 27 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/CoreNoticeRuleItemServiceImpl.java

@@ -0,0 +1,27 @@
+package com.xunmei.iot.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xunmei.common.core.domain.notice.CoreNoticeRuleItem;
+import com.xunmei.iot.mapper.CoreNoticeRuleItemMapper;
+import com.xunmei.iot.service.ICoreNoticeRuleItemService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author xujie
+ * @since 2024-09-19
+ */
+@Service
+public class CoreNoticeRuleItemServiceImpl extends ServiceImpl<CoreNoticeRuleItemMapper, CoreNoticeRuleItem> implements ICoreNoticeRuleItemService {
+
+
+    @Override
+    public List<String> getNoticeProductTypesByUser(List<String> roleIds, Long orgId, Long userId) {
+        return baseMapper.getNoticeProductTypesByUser(roleIds, orgId, userId);
+    }
+}

+ 21 - 4
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/IotBoardServiceImpl.java

@@ -24,10 +24,7 @@ import com.xunmei.iot.mapper.IotBoardMapper;
 import com.xunmei.iot.mapper.IotDvrChannelMapper;
 import com.xunmei.iot.mapper.IotDvrDiskMapper;
 import com.xunmei.iot.mapper.VideoDaysCheckMapper;
-import com.xunmei.iot.service.IIotCommonSensorService;
-import com.xunmei.iot.service.IotAlarmDataService;
-import com.xunmei.iot.service.IotBoardService;
-import com.xunmei.iot.service.VideoDiagnosisService;
+import com.xunmei.iot.service.*;
 import com.xunmei.iot.vo.alarmData.AppAlarmDataPageVo;
 import com.xunmei.iot.vo.board.IotBoardOverviewItemVo;
 import com.xunmei.iot.vo.board.IotBoardOverviewVo;
@@ -35,6 +32,7 @@ import com.xunmei.iot.vo.board.IotBoardTotalData;
 import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.domain.SysOrg;
 import com.xunmei.system.api.domain.SysUser;
+import com.xunmei.system.api.model.LoginUser;
 import com.xunmei.system.api.vo.SysOrgVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
@@ -77,6 +75,9 @@ public class IotBoardServiceImpl implements IotBoardService {
     @Resource
     IotDvrDiskMapper iotDvrDiskMapper;
 
+    @Resource
+    ICoreNoticeRuleItemService coreNoticeRuleItemService;
+
     private final Long TIMEOUT = 3L;
 
     @Override
@@ -211,6 +212,18 @@ public class IotBoardServiceImpl implements IotBoardService {
         //屏蔽红外
         alarmDataList.removeIf(d -> ObjectUtil.equal(METER_ATTRIBUTES_4.getText(), d.getSourceTypeDes()));
         Map<Object, List<IotAlarmData>> dataList = alarmDataList.stream().collect(Collectors.groupingBy(IotAlarmData::getSourceType));
+
+
+        //查询当前登录用户需要通知的告警类型
+        LoginUser loginUser = SecurityUtils.getLoginUser();
+        List<String> roleIds = null;
+        Set<String> roles = loginUser.getRoles();
+        if (roles != null && !roles.isEmpty()){
+            roleIds = new ArrayList<>(roles);
+        }
+        List<String> productTypes = coreNoticeRuleItemService.getNoticeProductTypesByUser(roleIds, orgId, loginUser.getUserid());
+
+
         for (Map.Entry<Object, List<IotAlarmData>> listEntry : dataList.entrySet()) {
             List<IotAlarmData> value = listEntry.getValue();
             Map<String, Object> hashMap = new HashMap<>();
@@ -224,6 +237,8 @@ public class IotBoardServiceImpl implements IotBoardService {
             hashMap.put("unDealAlarm", (int) unDealAlarm);
             hashMap.put("needAlarm", (int) needAlarm);
             hashMap.put("currentAlarmData", getAlarmDataList(value, Integer.parseInt(listEntry.getKey().toString()), cacheList));
+            hashMap.put("needNotice", productTypes.contains(value.get(0).getSourceType()) ? 1 : 0);
+
             resultList.add(hashMap);
         }
         List<String> keyList = resultList.stream().map(m -> m.get("key")).distinct().map(String::valueOf).collect(Collectors.toList());
@@ -237,6 +252,7 @@ public class IotBoardServiceImpl implements IotBoardService {
                 hashMap.put("unDealAlarm", 0);
                 hashMap.put("needAlarm", 0);
                 hashMap.put("currentAlarmData", Lists.newArrayList());
+                hashMap.put("needNotice", 0);
                 resultList.add(hashMap);
             }
         }
@@ -286,6 +302,7 @@ public class IotBoardServiceImpl implements IotBoardService {
             hashMap.put("unDealAlarm", 0);
             hashMap.put("needAlarm", 0);
             hashMap.put("currentAlarmData", Lists.newArrayList());
+            hashMap.put("needNotice", 0);
             resultList.add(hashMap);
         }
 

+ 27 - 0
soc-modules/soc-modules-iot/src/main/resources/mapper/CoreNoticeRuleItemMapper.xml

@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.xunmei.iot.mapper.CoreNoticeRuleItemMapper">
+
+
+    <select id="getNoticeProductTypesByUser" resultType="java.lang.String">
+        SELECT
+            r.product_type
+        FROM
+            core_notice_rule_item r
+            LEFT JOIN core_notice_rule c ON r.rule_id = c.id
+        WHERE
+            c.`enable` = 1
+            AND r.org_id = #{orgId}
+            AND (
+                    r.user_ids LIKE concat( '%', #{userId}, '%' )
+                    <if test="roleIds != null and roleIds.size() > 0">
+                        OR r.role_id IN
+                        <foreach collection="roleIds" index="index" item="item" open="(" separator="," close=")">
+                            #{item}
+                        </foreach>
+                    </if>
+                )
+        GROUP BY
+            r.product_type
+    </select>
+</mapper>