Browse Source

分组管理数据隔离逻辑修改

jichaobo 3 years ago
parent
commit
e4b54ce67f

+ 6 - 0
fiveep-model/src/main/java/com/bizmatics/model/SiteGrouping.java

@@ -48,5 +48,11 @@ public class SiteGrouping implements Serializable {
     @TableField("creation_time")
     private LocalDateTime creationTime;
 
+    /**
+     * 租户ID
+     */
+    @TableField("tenant_id")
+    private Integer tenantId;
+
 
 }

+ 16 - 3
fiveep-persistence/src/main/java/com/bizmatics/persistence/mapper/SiteMapper.java

@@ -38,13 +38,26 @@ public interface SiteMapper extends CrudMapper<Site> {
                       @Param("name") String name);
 
     List<SiteList> Sitelist(@Param("userId") Integer userId,
-                            @Param("name") String name);
+                            @Param("name") String name,
+                            @Param("tenantId") Integer tenantId);
+
+    List<SiteList> SitelistOne(@Param("name") String name,
+                               @Param("tenantId") Integer tenantId);
 
     List<GroupingList> GroupingList(@Param("name") String name,
-                                    @Param("creator") String creator);
+                                    @Param("creator") String creator,
+                                    @Param("tenantId") Integer tenantId);
+
+    List<GroupingList> GroupingListOne(@Param("name") String name,
+                                       @Param("creator") String creator,
+                                       @Param("tenantId") Integer tenantId);
+
+    List<GroupingList> GroupingListTwo(@Param("creator") String creator);
 
     List<SiteList> SiteGroupinglist(@Param("userId") Integer userId,
-                                    @Param("name") String name);
+                                    @Param("name") String name,
+                                    @Param("tenantId") Integer tenantId);
+
 
     List<TemplateData> templateQuery(@Param("id") Integer id);
 

+ 1 - 0
fiveep-persistence/src/main/resources/mapper/mysql/SiteGroupingMapper.xml

@@ -8,6 +8,7 @@
         <result column="grouping_name" property="groupingName" />
         <result column="creator" property="creator" />
         <result column="creation_time" property="creationTime" />
+        <result column="tenant_id" property="tenantId" />
     </resultMap>
 
 </mapper>

+ 74 - 0
fiveep-persistence/src/main/resources/mapper/mysql/SiteMapper.xml

@@ -134,6 +134,31 @@
             <if test="name != null and name != ''">
                 and b.site_name like CONCAT(CONCAT('%', #{name}), '%')
             </if>
+            <if test="tenantId != null and tenantId != 0 and tenantId !=''">
+                and b.tenant_id = #{tenantId}
+            </if>
+            group by b.id
+            order by b.id desc
+        </where>
+    </select>
+
+    <select id="SitelistOne" resultType="com.bizmatics.model.SiteList">
+        select
+        b.id,
+        b.grouping_id,
+        b.site_name,
+        c.grouping_name
+        from site as b
+        left join site_grouping as c on b.grouping_id = c.id
+        <where>
+            b.enable=1
+            <if test="name != null and name != ''">
+                and b.site_name like CONCAT(CONCAT('%', #{name}), '%')
+            </if>
+            <if test="tenantId != null and tenantId != 0 and tenantId !=''">
+                and b.tenant_id = #{tenantId}
+            </if>
+            group by b.id
             order by b.id desc
         </where>
     </select>
@@ -151,11 +176,56 @@
             <if test="creator != null and creator != ''">
                 and a.creator = #{creator}
             </if>
+            <if test="tenantId != null and tenantId != 0 and tenantId !=''">
+                and a.tenant_id = #{tenantId}
+            </if>
             group by a.id
             order by a.id desc
         </where>
     </select>
 
+    <select id="GroupingListOne" resultType="com.bizmatics.model.GroupingList">
+        select
+        a.id,
+        a.grouping_name
+        from site_grouping as a
+        join site as b on a.id = b.grouping_id
+        <where>
+            <if test="name != null and name != ''">
+                and b.site_name like CONCAT(CONCAT('%', #{name}), '%')
+            </if>
+            <if test="creator != null and creator != ''">
+                and a.creator = #{creator}
+            </if>
+            <if test="tenantId != null and tenantId != 0 and tenantId !=''">
+                and a.tenant_id = #{tenantId}
+            </if>
+            group by a.id
+            order by a.id desc
+        </where>
+    </select>
+
+    <select id="GroupingListTwo" resultType="com.bizmatics.model.GroupingList">
+        select
+        *
+        from 	(
+        SELECT
+        a.*, COUNT(b.id) AS sl
+        FROM
+        site_grouping AS a
+        LEFT JOIN site AS b ON a.id = b.grouping_id
+        GROUP BY
+        a.id
+        ) AS c
+        <where>
+            c.sl = 0
+            <if test="creator != null and creator != ''">
+                and c.creator = #{creator}
+            </if>
+            order by c.id desc
+        </where>
+    </select>
+
     <select id="SiteGroupinglist" resultType="com.bizmatics.model.SiteList">
         select
         a.user_id,
@@ -175,6 +245,10 @@
             <if test="name != null and name != ''">
                 and b.site_name like CONCAT(CONCAT('%', #{name}), '%')
             </if>
+            <if test="tenantId != null and tenantId != 0 and tenantId !=''">
+                and b.tenant_id = #{tenantId}
+            </if>
+            group by b.id
             order by b.id desc
         </where>
     </select>

+ 11 - 0
fiveep-service/src/main/java/com/bizmatics/service/impl/SiteGroupingServiceImpl.java

@@ -1,14 +1,18 @@
 package com.bizmatics.service.impl;
 
+import com.bizmatics.common.core.exception.BusinessException;
 import com.bizmatics.common.mvc.base.AbstractCrudService;
 import com.bizmatics.model.SiteGrouping;
 import com.bizmatics.model.system.SysUser;
 import com.bizmatics.persistence.mapper.SiteGroupingMapper;
+import com.bizmatics.persistence.mapper.system.SysUserMapper;
 import com.bizmatics.service.SiteGroupingService;
 import com.bizmatics.service.util.SecurityUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.time.LocalDateTime;
+import java.util.List;
 
 /**
  * 站点分组
@@ -18,14 +22,21 @@ import java.time.LocalDateTime;
  */
 @Service
 public class SiteGroupingServiceImpl extends AbstractCrudService<SiteGroupingMapper, SiteGrouping> implements SiteGroupingService {
+    @Autowired
+    private SysUserMapper userMapper;
 
     @Override
     public void siteGroupingAdd(String groupingName) {
+        List<SysUser> tenantDaya = userMapper.getTenantId(SecurityUtils.getLoginUser().getUser().getUserId());
+        if (tenantDaya.size() < 0) {
+            throw new BusinessException("无此租户,请联系管理员");
+        }
         SysUser user = SecurityUtils.getLoginUser().getUser();
         SiteGrouping siteGrouping = new SiteGrouping();
         siteGrouping.setGroupingName(groupingName);
         siteGrouping.setCreator(user.getUserName());
         siteGrouping.setCreationTime(LocalDateTime.now());
+        siteGrouping.setTenantId(tenantDaya.get(0).getTenantId());
         this.save(siteGrouping);
     }
 

+ 101 - 46
fiveep-service/src/main/java/com/bizmatics/service/impl/SiteServiceImpl.java

@@ -8,7 +8,6 @@ import com.bizmatics.common.core.util.BeanMapperUtils;
 import com.bizmatics.common.mvc.base.AbstractCrudService;
 import com.bizmatics.model.*;
 import com.bizmatics.model.system.SysUser;
-import com.bizmatics.model.vo.DeviceOneVo;
 import com.bizmatics.persistence.mapper.AlarmPowerMapper;
 import com.bizmatics.persistence.mapper.DeviceMapper;
 import com.bizmatics.persistence.mapper.SiteMapper;
@@ -23,11 +22,10 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.time.LocalDate;
 import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 /**
  * <p>
@@ -73,10 +71,10 @@ public class SiteServiceImpl extends AbstractCrudService<SiteMapper, Site> imple
     public List<Site> list(String name) {
         Integer userId = SecurityUtils.getLoginUser().getUser().getUserId().intValue();
         List<SysUser> tenantDaya = userMapper.getTenantId(SecurityUtils.getLoginUser().getUser().getUserId());
-        if (tenantDaya.size()<0) {
+        if (tenantDaya.size() < 0) {
             throw new BusinessException("无此租户,请联系管理员");
         }
-        return baseMapper.list(userId, name,tenantDaya.get(0).getTenantId());
+        return baseMapper.list(userId, name, tenantDaya.get(0).getTenantId());
     }
 
     @Override
@@ -89,8 +87,8 @@ public class SiteServiceImpl extends AbstractCrudService<SiteMapper, Site> imple
     public List<Site> siteList(String name) {
         LambdaQueryWrapper<Site> QueryWrapper = Wrappers.lambdaQuery();
         QueryWrapper.eq(Site::getEnable, 1);
-        if (null!=name){
-            QueryWrapper.eq(Site::getSiteName,name);
+        if (null != name) {
+            QueryWrapper.eq(Site::getSiteName, name);
         }
 
         List<Site> siteList = this.list(QueryWrapper);
@@ -102,10 +100,10 @@ public class SiteServiceImpl extends AbstractCrudService<SiteMapper, Site> imple
         List<SiteVO> list = new ArrayList<>();
         Integer userId = SecurityUtils.getLoginUser().getUser().getUserId().intValue();
         List<SysUser> tenantDaya = userMapper.getTenantId(SecurityUtils.getLoginUser().getUser().getUserId());
-        if (tenantDaya.size()<0) {
+        if (tenantDaya.size() < 0) {
             throw new BusinessException("无此租户,请联系管理员");
         }
-        List<Site> sites = baseMapper.list(userId, name,tenantDaya.get(0).getTenantId());
+        List<Site> sites = baseMapper.list(userId, name, tenantDaya.get(0).getTenantId());
         List<Device> deviceList = deviceMapper.list(userId, null, null, null, null, null);
         List<AlarmPower> alarmPowers = alarmPowerMapper.list(userId, null, null, null, null, null, 1);
         sites.forEach(site -> list.add(enhanceSite(deviceList, site, alarmPowers)));
@@ -170,7 +168,7 @@ public class SiteServiceImpl extends AbstractCrudService<SiteMapper, Site> imple
     @Override
     public void siteAdd(SiteVOT siteVOT) {
         List<SysUser> tenantDaya = userMapper.getTenantId(SecurityUtils.getLoginUser().getUser().getUserId());
-        if (tenantDaya.size()<0) {
+        if (tenantDaya.size() < 0) {
             throw new BusinessException("无此租户,请联系管理员");
         }
         SysUser user = SecurityUtils.getLoginUser().getUser();
@@ -223,46 +221,103 @@ public class SiteServiceImpl extends AbstractCrudService<SiteMapper, Site> imple
         List<SiteList> site_list = null;
         List<GroupingList> grouping_list = null;
         List<SiteList> site_grouping_list = null;
-        grouping_list = baseMapper.GroupingList(name,user.getUserName());
-        site_list = baseMapper.Sitelist(userId, name);
-        site_grouping_list = baseMapper.SiteGroupinglist(userId, name);
         List<Map<String, Object>> list1 = new ArrayList<>();
-        if (grouping_list.size() > 0) {
-            for (int i = 0; i < grouping_list.size(); i++) {
-                GroupingList grouping_list_one = (GroupingList) grouping_list.get(i);
-                Map<String, Object> map1 = new HashMap<>();
-                List<Map<String, Object>> list2 = new ArrayList<>();
-                map1.put("id", grouping_list_one.getId());
-                map1.put("grouping_id", grouping_list_one.getId());
-                map1.put("grouping_name", grouping_list_one.getGroupingName());
-                if (site_list.size() > 0) {
-                    for (int j = 0; j < site_list.size(); j++) {
-                        SiteList site_list_one = (SiteList) site_list.get(j);
-                        Map<String, Object> map2 = new HashMap<>();
-                        if (grouping_list_one.getId().equals(site_list_one.getGroupingId())) {
-                            map2.put("site_id", site_list_one.getId());
-                            map2.put("site_name", site_list_one.getSiteName());
+        List<SysUser> tenantDaya = userMapper.getTenantId(SecurityUtils.getLoginUser().getUser().getUserId());
+        if (tenantDaya.size() < 0) {
+            throw new BusinessException("无此租户,请联系管理员");
+        }
+        if (tenantDaya.get(0).getUserType().equals("01")){
+            grouping_list = baseMapper.GroupingList(name, null,tenantDaya.get(0).getTenantId());
+            site_list = baseMapper.SitelistOne(name,tenantDaya.get(0).getTenantId());
+            site_grouping_list = baseMapper.SiteGroupinglist(0, name,tenantDaya.get(0).getTenantId());
+            if (grouping_list.size() > 0) {
+                for (int i = 0; i < grouping_list.size(); i++) {
+                    GroupingList grouping_list_one = (GroupingList) grouping_list.get(i);
+                    Map<String, Object> map1 = new HashMap<>();
+                    List<Map<String, Object>> list2 = new ArrayList<>();
+                    map1.put("id", grouping_list_one.getId());
+                    map1.put("grouping_id", grouping_list_one.getId());
+                    map1.put("grouping_name", grouping_list_one.getGroupingName());
+                    if (site_list.size() > 0) {
+                        for (int j = 0; j < site_list.size(); j++) {
+                            SiteList site_list_one = (SiteList) site_list.get(j);
+                            Map<String, Object> map2 = new HashMap<>();
+                            if (grouping_list_one.getId().equals(site_list_one.getGroupingId())) {
+                                map2.put("site_id", site_list_one.getId());
+                                map2.put("site_name", site_list_one.getSiteName());
 //                        map2.put("grouping_id",site_list_one.getGroupingId());
-                            list2.add(map2);
+                                list2.add(map2);
+                            }
                         }
+                        map1.put("site_list", list2);
+                    } else {
+                        map1.put("site_list", list2);
                     }
-                    map1.put("site_list", list2);
-                }else {
-                    map1.put("site_list", list2);
+                    list1.add(map1);
                 }
-                list1.add(map1);
             }
-        }
-        if (site_grouping_list.size() > 0) {
-            List<Map<String, Object>> list3 = new ArrayList<>();
-            for (int i = 0; i < site_grouping_list.size(); i++) {
-                SiteList site_grouping_list_one = (SiteList) site_grouping_list.get(i);
-                Map<String, Object> map3 = new HashMap<>();
-                map3.put("id", site_grouping_list_one.getId());
-                map3.put("grouping_id", 0);
-                map3.put("grouping_name", site_grouping_list_one.getSiteName());
-                map3.put("site_list", list3);
-                list1.add(map3);
+            if (site_grouping_list.size() > 0) {
+                List<Map<String, Object>> list3 = new ArrayList<>();
+                for (int i = 0; i < site_grouping_list.size(); i++) {
+                    SiteList site_grouping_list_one = (SiteList) site_grouping_list.get(i);
+                    Map<String, Object> map3 = new HashMap<>();
+                    map3.put("id", site_grouping_list_one.getId());
+                    map3.put("grouping_id", 0);
+                    map3.put("grouping_name", site_grouping_list_one.getSiteName());
+                    map3.put("site_list", list3);
+                    list1.add(map3);
+                }
+            }
+        }else if (tenantDaya.get(0).getUserType().equals("00")){
+            List<GroupingList> grouping_list_one = null;
+            List<GroupingList> grouping_list_two = null;
+            site_list = baseMapper.Sitelist(userId, name,tenantDaya.get(0).getTenantId());
+            grouping_list_one = baseMapper.GroupingListOne(name, null,tenantDaya.get(0).getTenantId());
+            grouping_list_two = baseMapper.GroupingListTwo(user.getUserName());
+//            合并list
+            grouping_list = Stream.of(grouping_list_one, grouping_list_two).flatMap(Collection::stream).collect(Collectors.toList());
+            //排序
+            List<GroupingList> dateListMap = grouping_list;
+//            Map<Integer, List<GroupingList>> dateListMap  = grouping_list.stream().collect(Collectors.groupingBy(GroupingList::getId,TreeMap::new,Collectors.toList())).descendingMap();
+            site_grouping_list = baseMapper.SiteGroupinglist(userId, name,tenantDaya.get(0).getTenantId());
+
+            if (dateListMap.size() > 0) {
+                for (int i = 0; i < dateListMap.size(); i++) {
+                    GroupingList grouping_list_three = (GroupingList) dateListMap.get(i);
+                    Map<String, Object> map1 = new HashMap<>();
+                    List<Map<String, Object>> list2 = new ArrayList<>();
+                    map1.put("id", grouping_list_three.getId());
+                    map1.put("grouping_id", grouping_list_three.getId());
+                    map1.put("grouping_name", grouping_list_three.getGroupingName());
+                    if (site_list.size() > 0) {
+                        for (int j = 0; j < site_list.size(); j++) {
+                            SiteList site_list_one = (SiteList) site_list.get(j);
+                            Map<String, Object> map2 = new HashMap<>();
+                            if (grouping_list_three.getId().equals(site_list_one.getGroupingId())) {
+                                map2.put("site_id", site_list_one.getId());
+                                map2.put("site_name", site_list_one.getSiteName());
+//                        map2.put("grouping_id",site_list_one.getGroupingId());
+                                list2.add(map2);
+                            }
+                        }
+                        map1.put("site_list", list2);
+                    } else {
+                        map1.put("site_list", list2);
+                    }
+                    list1.add(map1);
+                }
+            }
+            if (site_grouping_list.size() > 0) {
+                List<Map<String, Object>> list3 = new ArrayList<>();
+                for (int i = 0; i < site_grouping_list.size(); i++) {
+                    SiteList site_grouping_list_one = (SiteList) site_grouping_list.get(i);
+                    Map<String, Object> map3 = new HashMap<>();
+                    map3.put("id", site_grouping_list_one.getId());
+                    map3.put("grouping_id", 0);
+                    map3.put("grouping_name", site_grouping_list_one.getSiteName());
+                    map3.put("site_list", list3);
+                    list1.add(map3);
+                }
             }
         }
         return list1;
@@ -272,8 +327,8 @@ public class SiteServiceImpl extends AbstractCrudService<SiteMapper, Site> imple
     @Override
     public List<DeviceAnalogVariableList> dynamicPropertiesDroplist(Integer siteId, Integer dataArea) {
         List<DeviceAnalogVariableList> deviceAnalogVariableList = new ArrayList<>();
-        if (siteId!=0){
-            deviceAnalogVariableList = baseMapper.deviceAnalogVariableList(siteId,dataArea);
+        if (siteId != 0) {
+            deviceAnalogVariableList = baseMapper.deviceAnalogVariableList(siteId, dataArea);
         }
         return deviceAnalogVariableList;
     }