TRX vor 1 Jahr
Ursprung
Commit
e4d1e5337d
15 geänderte Dateien mit 303 neuen und 21 gelöschten Zeilen
  1. 33 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/devices/permiss/PermissSettingListSearch.java
  2. 2 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/devices/DeviceGroupToDeviceDao.java
  3. 2 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/devices/DevicePermissDao.java
  4. 3 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/devices/PermissSettingDao.java
  5. 2 1
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/devices/PermissSettingListDao.java
  6. 5 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/devices/PermissTimeSlotDao.java
  7. 17 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/devices/extend/PermissSettingListDaoExtend.java
  8. 87 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/devices/impl/PermissSettingListDaoImpl.java
  9. 2 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/org/UserGroupToUserDao.java
  10. 3 4
      FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/devices/permiss/PermissSetting.java
  11. 1 1
      FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/devices/permiss/PermissSettingList.java
  12. 5 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/org/UserGroupToUser.java
  13. 136 14
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/devices/permiss/DevicePermissVerifyService.java
  14. 4 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/devices/permiss/PermissSettingService.java
  15. 1 1
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/org/UserGroupService.java

+ 33 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/devices/permiss/PermissSettingListSearch.java

@@ -0,0 +1,33 @@
+package com.zhongshu.card.client.model.devices.permiss;
+
+import com.zhongshu.card.client.model.base.SuperSearch;
+import com.zhongshu.card.client.type.Sex;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author TRX
+ * @date 2024/12/25
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class PermissSettingListSearch extends SuperSearch {
+
+    @Schema(description = "性别")
+    private Sex sex;
+
+    @Schema(description = "时段列表")
+    private List<String> timeSlotIds = new ArrayList<>();
+
+    @Schema(description = "用户管理的数据")
+    private List<String> dataIds = new ArrayList<>();
+
+    @Schema(description = "设备")
+    private List<String> deviceIds = new ArrayList<>();
+}

+ 2 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/devices/DeviceGroupToDeviceDao.java

@@ -22,4 +22,6 @@ public interface DeviceGroupToDeviceDao extends MongoDao<DeviceGroupToDevice>, D
 
     long countByDeviceGroup(DeviceGroup deviceGroup);
 
+    List<DeviceGroupToDevice> findByProjectOidAndDeviceId(String projectOid, String deviceId);
+
 }

+ 2 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/devices/DevicePermissDao.java

@@ -28,6 +28,8 @@ public interface DevicePermissDao extends MongoDao<DevicePermiss>, DevicePermiss
 
     DevicePermiss findTopByUserIdAndDeviceIdAndProjectOid(String userId, String deviceId, String projectOid);
 
+    DevicePermiss findTopByUserIdAndDeviceIdAndProjectOidAndDataState(String userId, String deviceId, String projectOid, DataState dataState);
+
     List<DevicePermiss> findByOrganizationUserIn(List<OrganizationUser> organizationUsers);
 
     List<DevicePermiss> findByDeviceIdInAndDataState(List<String> deviceIds, DataState dataState);

+ 3 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/devices/PermissSettingDao.java

@@ -4,6 +4,8 @@ import com.github.microservice.components.data.mongo.mongo.dao.MongoDao;
 import com.zhongshu.card.server.core.dao.devices.extend.PermissSettingDaoExtend;
 import com.zhongshu.card.server.core.domain.devices.permiss.PermissSetting;
 
+import java.util.List;
+
 /**
  * 权限时间段数据
  *
@@ -14,4 +16,5 @@ public interface PermissSettingDao extends MongoDao<PermissSetting>, PermissSett
 
     PermissSetting findTopById(String id);
 
+    List<PermissSetting> findByTimeSlotIdIn(List<String> ids);
 }

+ 2 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/devices/PermissSettingListDao.java

@@ -1,6 +1,7 @@
 package com.zhongshu.card.server.core.dao.devices;
 
 import com.github.microservice.components.data.mongo.mongo.dao.MongoDao;
+import com.zhongshu.card.server.core.dao.devices.extend.PermissSettingListDaoExtend;
 import com.zhongshu.card.server.core.domain.devices.permiss.PermissSetting;
 import com.zhongshu.card.server.core.domain.devices.permiss.PermissSettingList;
 
@@ -10,7 +11,7 @@ import java.util.List;
  * @author TRX
  * @date 2024/3/21
  */
-public interface PermissSettingListDao extends MongoDao<PermissSettingList> {
+public interface PermissSettingListDao extends MongoDao<PermissSettingList>, PermissSettingListDaoExtend {
 
     PermissSettingList findTopById(String id);
 

+ 5 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/devices/PermissTimeSlotDao.java

@@ -1,9 +1,13 @@
 package com.zhongshu.card.server.core.dao.devices;
 
 import com.github.microservice.components.data.mongo.mongo.dao.MongoDao;
+import com.zhongshu.card.client.type.DataState;
+import com.zhongshu.card.client.type.device.TimeSlotType;
 import com.zhongshu.card.server.core.dao.devices.extend.PermissTimeSlotDaoExtend;
 import com.zhongshu.card.server.core.domain.devices.permiss.PermissTimeSlot;
 
+import java.util.List;
+
 /**
  * 权限时间段数据
  *
@@ -14,4 +18,5 @@ public interface PermissTimeSlotDao extends MongoDao<PermissTimeSlot>, PermissTi
 
     PermissTimeSlot findTopById(String id);
 
+    List<PermissTimeSlot> findByProjectOidAndStateAndType(String projectOid, DataState state, TimeSlotType type);
 }

+ 17 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/devices/extend/PermissSettingListDaoExtend.java

@@ -0,0 +1,17 @@
+package com.zhongshu.card.server.core.dao.devices.extend;
+
+import com.zhongshu.card.client.model.devices.permiss.PermissSettingListSearch;
+import com.zhongshu.card.server.core.domain.devices.permiss.PermissSettingList;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+
+/**
+ * @Author TRX
+ * @CreateDate: 2023/7/7
+ * @Version: 1.0
+ */
+public interface PermissSettingListDaoExtend {
+
+    Page<PermissSettingList> page(Pageable pageable, PermissSettingListSearch param);
+
+}

+ 87 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/devices/impl/PermissSettingListDaoImpl.java

@@ -0,0 +1,87 @@
+package com.zhongshu.card.server.core.dao.devices.impl;
+
+import com.github.microservice.components.data.mongo.mongo.helper.DBHelper;
+import com.zhongshu.card.client.model.devices.permiss.PermissSettingListSearch;
+import com.zhongshu.card.server.core.dao.BaseImpl;
+import com.zhongshu.card.server.core.dao.devices.PermissSettingDao;
+import com.zhongshu.card.server.core.dao.devices.extend.PermissSettingListDaoExtend;
+import com.zhongshu.card.server.core.dao.org.DepartmentDao;
+import com.zhongshu.card.server.core.dao.org.RoleDao;
+import com.zhongshu.card.server.core.domain.devices.permiss.PermissSetting;
+import com.zhongshu.card.server.core.domain.devices.permiss.PermissSettingList;
+import com.zhongshu.card.server.core.util.CommonUtil;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Author TRX
+ * @CreateDate: 2023/4/12
+ * @Version: 1.0
+ */
+public class PermissSettingListDaoImpl extends BaseImpl implements PermissSettingListDaoExtend {
+
+    @Autowired
+    private MongoTemplate mongoTemplate;
+
+    @Autowired
+    private DBHelper dbHelper;
+
+    @Autowired
+    private RoleDao roleDao;
+
+    @Autowired
+    private DepartmentDao departmentDao;
+
+    @Autowired
+    private PermissSettingDao permissSettingDao;
+
+    @Override
+    public Page<PermissSettingList> page(Pageable pageable, PermissSettingListSearch param) {
+        Criteria criteria = buildCriteriaNotOid(param);
+
+        // 所属项目信息
+        if (StringUtils.isNotEmpty(param.getProjectOid())) {
+            criteria.and("projectOid").is(param.getProjectOid());
+        }
+
+        // 时段筛选出来的规则信息
+        if (ObjectUtils.isNotEmpty(param.getTimeSlotIds())) {
+            List<PermissSetting> permissSettingList = permissSettingDao.findByTimeSlotIdIn(param.getTimeSlotIds());
+            if (ObjectUtils.isEmpty(permissSettingList)) {
+                return CommonUtil.buildEmptyPage(pageable, PermissSettingList.class);
+            }
+            criteria.and("permissSetting").in(permissSettingList);
+        }
+
+        // 模糊搜索
+        List<Criteria> criterias = new ArrayList<>();
+
+        if (param.getSex() != null) {
+            criterias.add(Criteria.where("sex").is(param.getSex()));
+        }
+        if (ObjectUtils.isNotEmpty(param.getDataIds())) {
+            criterias.add(Criteria.where("dataIds").in(param.getDataIds()));
+        }
+        criteria.orOperator(criterias.toArray(new Criteria[]{}));
+
+        if (ObjectUtils.isNotEmpty(param.getDeviceIds())) {
+            criteria.and("deviceIds").in(param.getDeviceIds());
+        }
+
+        Sort sort = buildSort(param);
+        Query query = Query.query(criteria);
+        query.with(sort);
+        return dbHelper.pages(query, pageable, PermissSettingList.class);
+    }
+
+}

+ 2 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/org/UserGroupToUserDao.java

@@ -22,4 +22,6 @@ public interface UserGroupToUserDao extends MongoDao<UserGroupToUser>, UserGroup
 
     long countByUserGroup(UserGroup userGroup);
 
+    List<UserGroupToUser> findByUserIdAndProjectOid(String userId, String projectOid);
+
 }

+ 3 - 4
FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/devices/permiss/PermissSetting.java

@@ -1,6 +1,5 @@
 package com.zhongshu.card.server.core.domain.devices.permiss;
 
-import com.zhongshu.card.client.model.devices.permiss.PermissSettingConfigParam;
 import com.zhongshu.card.client.type.DataState;
 import com.zhongshu.card.server.core.domain.base.SuperMain;
 import io.swagger.v3.oas.annotations.media.Schema;
@@ -10,9 +9,6 @@ import lombok.NoArgsConstructor;
 import org.springframework.data.mongodb.core.mapping.DBRef;
 import org.springframework.data.mongodb.core.mapping.Document;
 
-import java.util.ArrayList;
-import java.util.List;
-
 /**
  * 设备权限 规则 设置数据
  *
@@ -32,6 +28,9 @@ public class PermissSetting extends SuperMain {
     @DBRef(lazy = true)
     private PermissTimeSlot timeSlot;
 
+    @Schema(description = "关联的时段数据ID")
+    private String timeSlotId;
+
     @Schema(description = "数据状态")
     private DataState state = DataState.Enable;
 }

+ 1 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/devices/permiss/PermissSettingList.java

@@ -42,7 +42,7 @@ public class PermissSettingList extends SuperMain {
     @Indexed
     private List<String> dataIds = new ArrayList<>();
 
-    @Schema(description = "设备类型--分组、设备")
+    @Schema(description = "设备类型--分组、设备、区域")
     private PermissSettingDeviceType permissSettingDeviceType;
 
     @Schema(description = "设备列表")

+ 5 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/org/UserGroupToUser.java

@@ -5,6 +5,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
+import org.springframework.data.mongodb.core.index.Indexed;
 import org.springframework.data.mongodb.core.mapping.DBRef;
 import org.springframework.data.mongodb.core.mapping.Document;
 
@@ -22,6 +23,9 @@ public class UserGroupToUser extends SuperMain {
     @DBRef(lazy = true)
     private UserGroup userGroup;
 
+    @Schema(description = "分组ID")
+    private String userGroupId;
+
     @Schema(description = "机构用户信息")
     @DBRef(lazy = true)
     private OrganizationUser organizationUser;
@@ -29,6 +33,7 @@ public class UserGroupToUser extends SuperMain {
     @Schema(description = "机构用户数据id")
     private String orgDataId;
 
+    @Indexed
     @Schema(description = "用户userId")
     private String userId;
 

+ 136 - 14
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/devices/permiss/DevicePermissVerifyService.java

@@ -1,26 +1,32 @@
 package com.zhongshu.card.server.core.service.devices.permiss;
 
 import com.github.microservice.net.ResultContent;
+import com.zhongshu.card.client.model.devices.permiss.PermissSettingListSearch;
 import com.zhongshu.card.client.model.devices.permiss.TimeSlotModel;
 import com.zhongshu.card.client.model.devices.permiss.TimeSlotWeekModel;
 import com.zhongshu.card.client.type.DataState;
 import com.zhongshu.card.client.type.UserState;
-import com.zhongshu.card.client.type.device.PermissDataType;
 import com.zhongshu.card.client.type.device.TimeSlotType;
 import com.zhongshu.card.client.type.device.WeekDayType;
 import com.zhongshu.card.client.utils.DateUtils;
-import com.zhongshu.card.server.core.dao.devices.DeviceInfoDao;
-import com.zhongshu.card.server.core.dao.devices.DevicePermissDao;
-import com.zhongshu.card.server.core.dao.devices.PermissSettingListDao;
+import com.zhongshu.card.server.core.dao.devices.*;
 import com.zhongshu.card.server.core.dao.org.OrganizationUserDao;
 import com.zhongshu.card.server.core.dao.org.UserCountDao;
+import com.zhongshu.card.server.core.dao.org.UserGroupToUserDao;
+import com.zhongshu.card.server.core.domain.devices.DeviceGroup;
+import com.zhongshu.card.server.core.domain.devices.DeviceGroupToDevice;
 import com.zhongshu.card.server.core.domain.devices.DeviceInfo;
 import com.zhongshu.card.server.core.domain.devices.permiss.DevicePermiss;
+import com.zhongshu.card.server.core.domain.devices.permiss.PermissSettingList;
 import com.zhongshu.card.server.core.domain.devices.permiss.PermissTimeSlot;
-import com.zhongshu.card.server.core.domain.org.UserAccount;
+import com.zhongshu.card.server.core.domain.org.*;
+import com.zhongshu.card.server.core.service.org.OrganizationUserServiceImpl;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StopWatch;
 
@@ -53,6 +59,18 @@ public class DevicePermissVerifyService {
     @Autowired
     private PermissSettingListDao permissSettingListDao;
 
+    @Autowired
+    private PermissTimeSlotDao permissTimeSlotDao;
+
+    @Autowired
+    private DeviceGroupToDeviceDao deviceGroupToDeviceDao;
+
+    @Autowired
+    private OrganizationUserServiceImpl organizationUserService;
+
+    @Autowired
+    private UserGroupToUserDao userGroupToUserDao;
+
     /**
      * 验证用户是否有设备的使用权限
      *
@@ -86,17 +104,82 @@ public class DevicePermissVerifyService {
 
         boolean hasPermission = false;
         String projectOid = deviceInfo.getProjectOid();
-        DevicePermiss devicePermiss = devicePermissDao.findTopByUserIdAndDeviceIdAndProjectOid(userId, deviceId, projectOid);
-        if (ObjectUtils.isNotEmpty(devicePermiss) && devicePermiss.getPermissDataType() == PermissDataType.UserSetting) {
-            // 手动管理的设备权限
-            if (devicePermiss.getDataState() == DataState.Enable) {
-                hasPermission = true;
-            }
+
+        // 验证手动管理的设备权限
+        DevicePermiss devicePermiss = devicePermissDao.findTopByUserIdAndDeviceIdAndProjectOidAndDataState(userId, deviceId, projectOid, DataState.Enable);
+        if (ObjectUtils.isNotEmpty(devicePermiss)) {
+            hasPermission = true;
         }
 
         if (!hasPermission) {
-            // 查看权限规则 是否包含该设备
+            // 查找当前时间对应的时段信息
+            List<PermissTimeSlot> permissTimeSlots = getCurrentTimeSlot(projectOid);
+            List<OrganizationUser> organizationUsers = organizationUserService.getUserOrgList(userId, projectOid);
 
+            if (ObjectUtils.isNotEmpty(permissTimeSlots) && ObjectUtils.isNotEmpty(organizationUsers)) {
+                // 查看权限规则 是否包含该设备
+                PermissSettingListSearch search = new PermissSettingListSearch();
+                search.setProjectOid(projectOid);
+                search.setTimeSlotIds(permissTimeSlots.stream().map(PermissTimeSlot::getId).collect(Collectors.toList()));
+                if (userAccount.getSex() != null) {
+                    search.setSex(userAccount.getSex());
+                }
+                List<String> dataIds = new ArrayList<>();
+                // 用户id
+                dataIds.add(userId);
+
+                // 用户所属角色、机构
+                organizationUsers.parallelStream().forEach(organizationUser -> {
+                    dataIds.add(organizationUser.getOrganization().getOid());
+                    List<Role> roles = organizationUser.getRoles();
+                    if (ObjectUtils.isNotEmpty(roles)) {
+                        dataIds.addAll(roles.stream().map(Role::getId).collect(Collectors.toList()));
+                    }
+                });
+
+                // 用户分组
+                List<UserGroupToUser> userGroupToUsers = userGroupToUserDao.findByUserIdAndProjectOid(userId, projectOid);
+                if (ObjectUtils.isNotEmpty(userGroupToUsers)) {
+                    userGroupToUsers.parallelStream().forEach(userGroupToUser -> {
+                        UserGroup userGroup = userGroupToUser.getUserGroup();
+                        if (ObjectUtils.isNotEmpty(userGroup) && userGroup.getState() == DataState.Enable) {
+                            dataIds.add(userGroup.getId());
+                        }
+                    });
+                }
+                search.setDataIds(dataIds);
+
+                // 设备属性
+                List<String> deviceIds = new ArrayList<>();
+                deviceIds.add(deviceId);
+                if (ObjectUtils.isNotEmpty(deviceInfo.getArea())) {
+                    // 区域的下级怎么办?
+                    deviceIds.add(deviceInfo.getArea().getId());
+                }
+
+                // 设备分组信息
+                List<DeviceGroupToDevice> deviceAbouts = deviceGroupToDeviceDao.findByProjectOidAndDeviceId(projectOid, deviceId);
+                if (ObjectUtils.isNotEmpty(deviceAbouts)) {
+                    List<String> groupIds = new ArrayList<>();
+                    deviceAbouts.parallelStream().forEach(it -> {
+                        DeviceGroup deviceGroup = it.getDeviceGroup();
+                        if (ObjectUtils.isNotEmpty(deviceGroup) && deviceGroup.getState() == DataState.Enable) {
+                            groupIds.add(deviceGroup.getId());
+                        }
+                    });
+                    if (ObjectUtils.isNotEmpty(groupIds)) {
+                        deviceIds.addAll(groupIds);
+                    }
+                }
+                // 设备所在的分组
+                search.setDeviceIds(deviceIds);
+
+                Pageable pageable = PageRequest.of(0, 1);
+                Page<PermissSettingList> page = permissSettingListDao.page(pageable, search);
+                if (ObjectUtils.isNotEmpty(page.getContent())) {
+                    hasPermission = true;
+                }
+            }
         }
 
         if (!hasPermission) {
@@ -106,6 +189,42 @@ public class DevicePermissVerifyService {
         return ResultContent.buildSuccess(msg);
     }
 
+    /**
+     * 查询当前时间所在的时间段信息
+     *
+     * @return
+     */
+    public List<PermissTimeSlot> getCurrentTimeSlot(String projectOid) {
+        List<PermissTimeSlot> list = new ArrayList<>();
+        List<PermissTimeSlot> allList = permissTimeSlotDao.findByProjectOidAndStateAndType(projectOid, DataState.Enable, TimeSlotType.Week);
+        if (ObjectUtils.isNotEmpty(allList)) {
+            Long currentTime = System.currentTimeMillis();
+            WeekDayType weekDayType = DateUtils.getTimeWeekData(currentTime);
+            int timeNumber = Integer.parseInt(DateUtils.paresTime(currentTime, "HHmm"));
+
+            allList.parallelStream().forEach(it -> {
+                List<TimeSlotWeekModel> timeSlotWeekModels = it.getTimeSlotWeekModels();
+                if (ObjectUtils.isNotEmpty(timeSlotWeekModels)) {
+
+                    // 筛选星期时间和是否有时间段
+                    List<TimeSlotWeekModel> _tempWeek = timeSlotWeekModels.parallelStream().filter(time -> {
+                        return time.getWeekDayType() == weekDayType && ObjectUtils.isNotEmpty(time.getTimeSlots());
+                    }).collect(Collectors.toList());
+
+                    _tempWeek.parallelStream().forEach(time -> {
+                        boolean exits = time.getTimeSlots().parallelStream().anyMatch(slotModel -> {
+                            return slotModel.getStartTimeNumber() < timeNumber && timeNumber < slotModel.getEndTimeNumber();
+                        });
+                        if (exits) {
+                            list.add(it);
+                        }
+                    });
+                }
+            });
+        }
+        return list;
+    }
+
     /**
      * 验证当前时间是否在时间段里
      *
@@ -134,10 +253,13 @@ public class DevicePermissVerifyService {
             });
 
             if (ObjectUtils.isNotEmpty(timeSlots)) {
-                Long time = System.currentTimeMillis();
-                timeSlots.parallelStream().filter(it -> {
+                int time = Integer.parseInt(DateUtils.paresTime(System.currentTimeMillis(), "HHmm"));
+                List<TimeSlotModel> temp = timeSlots.parallelStream().filter(it -> {
                     return it.getStartTimeNumber() < time && time < it.getEndTimeNumber();
                 }).collect(Collectors.toUnmodifiableList());
+                if (ObjectUtils.isNotEmpty(temp)) {
+                    b = true;
+                }
             }
         }
         return b;

+ 4 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/devices/permiss/PermissSettingService.java

@@ -112,8 +112,10 @@ public class PermissSettingService extends SuperService {
         }
         BeanUtils.copyProperties(param, entity);
         entity.setTimeSlot(timeSlot);
+        entity.setTimeSlotId(timeSlot.getId());
         permissSettingDao.save(entity);
 
+        // 保存规则相关的配置信息
         saveSettingList(entity, param.getList());
         return ResultContent.buildSuccess();
     }
@@ -129,7 +131,9 @@ public class PermissSettingService extends SuperService {
             for (PermissSettingConfigParam param : list) {
                 PermissSettingList permissSettingList = new PermissSettingList();
                 BeanUtils.copyProperties(param, permissSettingList);
+                permissSettingList.setProjectOid(entity.getProjectOid());
                 permissSettingList.setPermissSetting(entity);
+
                 saveList.add(permissSettingList);
                 if (StringUtils.isNotEmpty(permissSettingList.getId()) && ids.contains(permissSettingList.getId())) {
                     ids.remove(permissSettingList.getId());

+ 1 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/org/UserGroupService.java

@@ -124,6 +124,7 @@ public class UserGroupService extends SuperService {
                 if (ObjectUtils.isEmpty(userGroupToUser)) {
                     userGroupToUser = new UserGroupToUser();
                     userGroupToUser.setUserGroup(userGroup);
+                    userGroupToUser.setUserGroupId(userGroup.getId());
                     userGroupToUser.setOrganizationUser(organizationUser);
 
                     userGroupToUser.setProjectOid(userGroup.getProjectOid());
@@ -138,7 +139,6 @@ public class UserGroupService extends SuperService {
             }
             if (ObjectUtils.isNotEmpty(saveList)) {
                 userGroupToUserDao.saveAll(saveList);
-
                 initGroupNumber(userGroup);
             }
         }