Browse Source

[feat]修改设备组管理增加角色和部门新增&修改边界查询

dev
杨威 6 months ago
parent
commit
45e627b213
  1. 54
      dk-modules/business/src/main/resources/templates/alert.ftl
  2. 2
      dk-modules/business/src/main/resources/templates/pdfAlert.ftl
  3. 6
      dk-modules/sample/src/main/java/org/dromara/sample/feign/RemoteSystemFeign.java
  4. 24
      dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceProController.java
  5. 18
      dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceProService.java
  6. 94
      dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceProServiceImpl.java
  7. 11
      dk-modules/system/src/main/java/org/dromara/system/controller/system/SysUserController.java
  8. 8
      dk-modules/system/src/main/java/org/dromara/system/service/ISysUserService.java
  9. 4
      dk-modules/system/src/main/java/org/dromara/system/service/impl/SysDepartBoundaryServiceImpl.java
  10. 84
      dk-modules/system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java

54
dk-modules/business/src/main/resources/templates/alert.ftl

@ -829,6 +829,33 @@
</w:r> </w:r>
</w:p> </w:p>
</w:tc> </w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:w="1420" w:type="dxa"/>
<w:shd w:val="clear" w:color="auto" w:fill="auto"/>
</w:tcPr>
<w:p>
<w:pPr>
<w:listPr>
<w:ilvl w:val="0"/>
<w:ilfo w:val="0"/>
</w:listPr>
<w:rPr>
<w:rFonts w:hint="default"/>
<w:vertAlign w:val="baseline"/>
<w:lang w:val="EN-US" w:fareast="ZH-CN"/>
</w:rPr>
</w:pPr>
<w:r>
<w:rPr>
<w:rFonts w:hint="fareast"/>
<w:vertAlign w:val="baseline"/>
<w:lang w:val="EN-US" w:fareast="ZH-CN"/>
</w:rPr>
<w:t>标签</w:t>
</w:r>
</w:p>
</w:tc>
<w:tc> <w:tc>
<w:tcPr> <w:tcPr>
<w:tcW w:w="1421" w:type="dxa"/> <w:tcW w:w="1421" w:type="dxa"/>
@ -1012,6 +1039,33 @@
</w:r> </w:r>
</w:p> </w:p>
</w:tc> </w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:w="1420" w:type="dxa"/>
<w:shd w:val="clear" w:color="auto" w:fill="auto"/>
</w:tcPr>
<w:p>
<w:pPr>
<w:listPr>
<w:ilvl w:val="0"/>
<w:ilfo w:val="0"/>
</w:listPr>
<w:rPr>
<w:rFonts w:hint="default"/>
<w:vertAlign w:val="baseline"/>
<w:lang w:val="EN-US" w:fareast="ZH-CN"/>
</w:rPr>
</w:pPr>
<w:r>
<w:rPr>
<w:rFonts w:hint="fareast"/>
<w:vertAlign w:val="baseline"/>
<w:lang w:val="EN-US" w:fareast="ZH-CN"/>
</w:rPr>
<w:t>${item.labelCn?if_exists}</w:t>
</w:r>
</w:p>
</w:tc>
<w:tc> <w:tc>
<w:tcPr> <w:tcPr>
<w:tcW w:w="1421" w:type="dxa"/> <w:tcW w:w="1421" w:type="dxa"/>

2
dk-modules/business/src/main/resources/templates/pdfAlert.ftl

@ -50,6 +50,7 @@
<td>预警名称</td> <td>预警名称</td>
<td>所属部门</td> <td>所属部门</td>
<td>预警状态</td> <td>预警状态</td>
<td>标签</td>
<td>经纬度</td> <td>经纬度</td>
<td>预警时间</td> <td>预警时间</td>
</tr> </tr>
@ -60,6 +61,7 @@
<td>${item.jobName?if_exists}</td> <td>${item.jobName?if_exists}</td>
<td>${item.deptName?if_exists}</td> <td>${item.deptName?if_exists}</td>
<td>${item.handleType?if_exists}</td> <td>${item.handleType?if_exists}</td>
<td>${item.labelCn?if_exists}</td>
<td>${item.lng?if_exists} ${item.lat?if_exists}</td> <td>${item.lng?if_exists} ${item.lat?if_exists}</td>
<td>${item.createTime?datetime?string('yyyy-MM-dd HH:mm:ss')}</td> <td>${item.createTime?datetime?string('yyyy-MM-dd HH:mm:ss')}</td>
</tr> </tr>

6
dk-modules/sample/src/main/java/org/dromara/sample/feign/RemoteSystemFeign.java

@ -8,6 +8,7 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import java.util.List; import java.util.List;
import java.util.Map;
@FeignClient(name = "gateway",path = "system") @FeignClient(name = "gateway",path = "system")
public interface RemoteSystemFeign { public interface RemoteSystemFeign {
@ -17,4 +18,9 @@ public interface RemoteSystemFeign {
@GetMapping(value = "/config/configKeyFeign/{configKey}") @GetMapping(value = "/config/configKeyFeign/{configKey}")
public String getConfigKeyFeign(@PathVariable String configKey); public String getConfigKeyFeign(@PathVariable String configKey);
//根据目标值类型查询用户信息
@GetMapping("/user/list/target")
public List<Map<String,Object>> listTargetTypeByUser(List<Map<String,Object>> params);
} }

24
dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceProController.java

@ -1,23 +1,20 @@
package org.dromara.sample.manage.controller; package org.dromara.sample.manage.controller;
import cn.hutool.core.lang.Dict;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.domain.R;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.common.sdk.common.HttpResultResponse; import org.dromara.common.sdk.common.HttpResultResponse;
import org.dromara.common.sdk.common.PaginationData; import org.dromara.common.sdk.common.PaginationData;
import org.dromara.sample.manage.model.dto.DeviceProDTO; import org.dromara.sample.manage.model.dto.DeviceProDTO;
import org.dromara.sample.manage.model.entity.DeviceProEntity; import org.dromara.sample.manage.model.entity.DeviceProEntity;
import org.dromara.sample.manage.model.entity.DeviceProUserEntity; import org.dromara.sample.manage.model.entity.DeviceProUserEntity;
import org.dromara.sample.manage.service.IDeviceProService; import org.dromara.sample.manage.service.IDeviceProService;
import org.dromara.system.api.model.LoginUser;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
import java.util.Map;
@RestController @RestController
@Slf4j @Slf4j
@ -87,11 +84,27 @@ public class DeviceProController {
*/ */
@Operation(summary = "新增/更新项目人员。", description = "新增/更新项目人员。") @Operation(summary = "新增/更新项目人员。", description = "新增/更新项目人员。")
@PostMapping("/{proId}/update") @PostMapping("/{proId}/update")
public HttpResultResponse<Boolean> updateDeviceProUser(@RequestBody List<DeviceProUserEntity> userEntity,@PathVariable Integer proId) { public HttpResultResponse<Boolean> updateDeviceProUser(@RequestBody List<DeviceProUserEntity> userEntity, @PathVariable Integer proId) {
return HttpResultResponse.success(deviceProService.updateDeviceProUser(userEntity,proId)); return HttpResultResponse.success(deviceProService.updateDeviceProUser(userEntity,proId));
} }
/**
* 新增/更新项目人员
* @param userEntity
* @return
*/
@Operation(summary = "新增/更新项目人员新", description = "新增/更新项目人员新")
@PostMapping("/{proId}/update/new")
public HttpResultResponse<Boolean> updateDeviceProUserNew(@RequestBody List<Map<String, Object>> userEntity, @PathVariable Integer proId) {
//目标类型 targetType 1、用户 2、角色 3、部门 targetKey 目标值 List<Map<String,Object>> params
return HttpResultResponse.success(deviceProService.updateDeviceProUserNew(userEntity,proId));
}
@Operation(summary = "查询项目人员。", description = "查询项目人员") @Operation(summary = "查询项目人员。", description = "查询项目人员")
@GetMapping("/{proId}/user/page") @GetMapping("/{proId}/user/page")
public HttpResultResponse<PaginationData<DeviceProUserEntity>> pageProUser(@PathVariable Integer proId, public HttpResultResponse<PaginationData<DeviceProUserEntity>> pageProUser(@PathVariable Integer proId,
@ -102,6 +115,7 @@ public class DeviceProController {
return HttpResultResponse.success(deviceProService.pageProUser(searchValue,proId,pageQuery)); return HttpResultResponse.success(deviceProService.pageProUser(searchValue,proId,pageQuery));
} }
@Operation(summary = "删除项目人员", description = "删除项目人员") @Operation(summary = "删除项目人员", description = "删除项目人员")
@DeleteMapping("/{proId}/{proUserId}/user/delete") @DeleteMapping("/{proId}/{proUserId}/user/delete")
public HttpResultResponse<Boolean> deleteProUser(@PathVariable Integer proId, public HttpResultResponse<Boolean> deleteProUser(@PathVariable Integer proId,

18
dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceProService.java

@ -2,24 +2,13 @@ package org.dromara.sample.manage.service;
import cn.hutool.core.lang.Dict; import cn.hutool.core.lang.Dict;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.databind.JsonNode;
import org.apache.ibatis.annotations.Param;
import org.dromara.common.sdk.cloudapi.device.ControlSourceEnum;
import org.dromara.common.sdk.cloudapi.device.DeviceOsdHost;
import org.dromara.common.sdk.cloudapi.device.DockModeCodeEnum;
import org.dromara.common.sdk.cloudapi.device.DroneModeCodeEnum;
import org.dromara.common.sdk.common.HttpResultResponse;
import org.dromara.common.sdk.common.PaginationData; import org.dromara.common.sdk.common.PaginationData;
import org.dromara.common.sdk.config.version.GatewayManager;
import org.dromara.common.websocket.dto.BizCodeEnum;
import org.dromara.sample.manage.model.dto.*; import org.dromara.sample.manage.model.dto.*;
import org.dromara.sample.manage.model.entity.DeviceProEntity; import org.dromara.sample.manage.model.entity.DeviceProEntity;
import org.dromara.sample.manage.model.entity.DeviceProUserEntity; import org.dromara.sample.manage.model.entity.DeviceProUserEntity;
import org.dromara.sample.manage.model.param.DeviceQueryParam;
import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Map;
/** /**
* @author sean.zhou * @author sean.zhou
@ -36,7 +25,9 @@ public interface IDeviceProService {
Boolean updateDevicePro(DeviceProEntity deviceProEntity); Boolean updateDevicePro(DeviceProEntity deviceProEntity);
Boolean updateDeviceProUser(List<DeviceProUserEntity> userEntity,Integer proId); Boolean updateDeviceProUser(List<DeviceProUserEntity> userEntity, Integer proId);
Boolean updateDeviceProUserNew(List<Map<String, Object>> userEntity, Integer proId);
Boolean updateDevice(Dict dict); Boolean updateDevice(Dict dict);
@ -58,4 +49,5 @@ public interface IDeviceProService {
Boolean initProRedisCache(); Boolean initProRedisCache();
} }

94
dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceProServiceImpl.java

@ -2,73 +2,32 @@ package org.dromara.sample.manage.service.impl;
import cn.hutool.core.collection.ListUtil; import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.lang.Dict; import cn.hutool.core.lang.Dict;
import cn.hutool.core.stream.StreamUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.executor.BatchResult;
import org.dromara.common.core.constant.Constants;
import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.redis.utils.RedisOpsUtils;
import org.dromara.common.redis.utils.RedisUtils; import org.dromara.common.redis.utils.RedisUtils;
import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.common.sdk.cloudapi.device.*;
import org.dromara.common.sdk.cloudapi.firmware.*;
import org.dromara.common.sdk.cloudapi.firmware.api.AbstractFirmwareService;
import org.dromara.common.sdk.cloudapi.property.api.AbstractPropertyService;
import org.dromara.common.sdk.cloudapi.tsa.DeviceIconUrl;
import org.dromara.common.sdk.cloudapi.tsa.TopologyDeviceModel;
import org.dromara.common.sdk.common.*; import org.dromara.common.sdk.common.*;
import org.dromara.common.sdk.config.version.GatewayManager; import org.dromara.sample.feign.RemoteSystemFeign;
import org.dromara.common.sdk.exception.CloudSDKException;
import org.dromara.common.sdk.mqtt.IMqttTopicService;
import org.dromara.common.sdk.mqtt.MqttGatewayPublish;
import org.dromara.common.sdk.mqtt.events.EventsSubscribe;
import org.dromara.common.sdk.mqtt.osd.OsdSubscribe;
import org.dromara.common.sdk.mqtt.property.PropertySetReplyResultEnum;
import org.dromara.common.sdk.mqtt.property.PropertySetSubscribe;
import org.dromara.common.sdk.mqtt.requests.RequestsSubscribe;
import org.dromara.common.sdk.mqtt.services.ServicesReplyData;
import org.dromara.common.sdk.mqtt.services.ServicesSubscribe;
import org.dromara.common.sdk.mqtt.services.TopicServicesResponse;
import org.dromara.common.sdk.mqtt.state.StateSubscribe;
import org.dromara.common.sdk.mqtt.status.StatusSubscribe;
import org.dromara.common.tenant.helper.TenantHelper;
import org.dromara.common.websocket.dto.BizCodeEnum;
import org.dromara.sample.common.error.CommonErrorEnum;
import org.dromara.sample.component.mqtt.model.EventsReceiver;
import org.dromara.sample.control.model.enums.DroneAuthorityEnum;
import org.dromara.sample.manage.mapper.IDeviceMapper; import org.dromara.sample.manage.mapper.IDeviceMapper;
import org.dromara.sample.manage.mapper.IDeviceProMapper; import org.dromara.sample.manage.mapper.IDeviceProMapper;
import org.dromara.sample.manage.mapper.IDeviceProUserMapper; import org.dromara.sample.manage.mapper.IDeviceProUserMapper;
import org.dromara.sample.manage.mapper.IDeviceQrtzMapper;
import org.dromara.sample.manage.model.dto.*; import org.dromara.sample.manage.model.dto.*;
import org.dromara.sample.manage.model.entity.DeviceEntity; import org.dromara.sample.manage.model.entity.DeviceEntity;
import org.dromara.sample.manage.model.entity.DeviceProEntity; import org.dromara.sample.manage.model.entity.DeviceProEntity;
import org.dromara.sample.manage.model.entity.DeviceProUserEntity; import org.dromara.sample.manage.model.entity.DeviceProUserEntity;
import org.dromara.sample.manage.model.entity.DeviceQrtzDateEntity;
import org.dromara.sample.manage.model.enums.DeviceFirmwareStatusEnum;
import org.dromara.sample.manage.model.enums.PropertySetFieldEnum;
import org.dromara.sample.manage.model.enums.UserTypeEnum;
import org.dromara.sample.manage.model.param.DeviceQueryParam;
import org.dromara.sample.manage.model.receiver.BasicDeviceProperty;
import org.dromara.sample.manage.service.*; import org.dromara.sample.manage.service.*;
import org.dromara.sample.websocket.service.IWebSocketMessageService;
import org.dromara.system.api.domain.vo.RemoteUserVo;
import org.dromara.system.api.model.LoginUser; import org.dromara.system.api.model.LoginUser;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.time.LocalDateTime;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -91,6 +50,9 @@ public class DeviceProServiceImpl implements IDeviceProService {
@Autowired @Autowired
private IDeviceProUserMapper deviceProUserMapper; private IDeviceProUserMapper deviceProUserMapper;
@Autowired
RemoteSystemFeign remoteSystemFeign;
@Override @Override
public PaginationData<DeviceProEntity> listDeviceProEntityMap(Page page, DeviceProDTO deviceProDTO) { public PaginationData<DeviceProEntity> listDeviceProEntityMap(Page page, DeviceProDTO deviceProDTO) {
@ -128,8 +90,7 @@ public class DeviceProServiceImpl implements IDeviceProService {
} }
@Override @Override
@Transactional(rollbackFor = Exception.class) public Boolean updateDeviceProUser(List<DeviceProUserEntity> userEntity, Integer proId) {
public Boolean updateDeviceProUser(List<DeviceProUserEntity> userEntity,Integer proId) {
try { try {
List<DeviceProUserEntity> proUserEntityList = deviceProUserMapper.selectList(new LambdaQueryWrapper<DeviceProUserEntity>().eq(DeviceProUserEntity::getDeviceProId, proId)); List<DeviceProUserEntity> proUserEntityList = deviceProUserMapper.selectList(new LambdaQueryWrapper<DeviceProUserEntity>().eq(DeviceProUserEntity::getDeviceProId, proId));
@ -153,6 +114,48 @@ public class DeviceProServiceImpl implements IDeviceProService {
} }
} }
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean updateDeviceProUserNew(List<Map<String, Object>> userEntity, Integer proId) {
try {
List<Map<String, Object>> resultList = remoteSystemFeign.listTargetTypeByUser(userEntity);
//构建DeviceProUserEntity集合
List<DeviceProUserEntity> userEntityList = new ArrayList<>();
resultList.forEach(resultMap -> {
DeviceProUserEntity deviceProUserEntity = new DeviceProUserEntity();
deviceProUserEntity.setDeviceProId(proId);
deviceProUserEntity.setUserId(Long.valueOf(resultMap.get("userId") + ""));
deviceProUserEntity.setUserName(resultMap.get("userName") + "");
deviceProUserEntity.setNickName(resultMap.get("nickName") + "");
userEntityList.add(deviceProUserEntity);
});
List<DeviceProUserEntity> proUserEntityList = deviceProUserMapper.selectList(new LambdaQueryWrapper<DeviceProUserEntity>().eq(DeviceProUserEntity::getDeviceProId, proId));
List<DeviceProUserEntity> different = userEntityList.stream()
.filter(user -> proUserEntityList.stream().noneMatch(u -> u.getUserId().equals(user.getUserId())))
.toList();
if (ObjectUtil.isNotEmpty(different)){
//添加新的项目组成员
deviceProUserMapper.insert(different);
}
//更新设备组redis缓存
Boolean flag = updateDeviceProCache("update",null);
return true;
} catch (ServiceException e) {
log.error(e.getMessage(),e);
return false;
}
}
/** /**
* 更新设备组人员缓存 * 更新设备组人员缓存
* @return * @return
@ -364,6 +367,7 @@ public class DeviceProServiceImpl implements IDeviceProService {
return this.updateDeviceProCache("init",null); return this.updateDeviceProCache("init",null);
} }
@Override @Override
public Boolean saveAndUpdate(DeviceProEntity entity) { public Boolean saveAndUpdate(DeviceProEntity entity) {
boolean flag = true; boolean flag = true;

11
dk-modules/system/src/main/java/org/dromara/system/controller/system/SysUserController.java

@ -37,6 +37,7 @@ import org.springframework.web.multipart.MultipartFile;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 用户信息 * 用户信息
@ -334,4 +335,14 @@ public class SysUserController extends BaseController {
return R.ok(userService.selectUserListByDept(deptId)); return R.ok(userService.selectUserListByDept(deptId));
} }
/**
* 用于设备组添加成员,根据目标值类型查询
* @param params
* @return
*/
@GetMapping("/list/target")
public List<Map<String,Object>> listTargetTypeByUser(List<Map<String,Object>> params){
return userService.listTargetTypeByUser(params);
}
} }

8
dk-modules/system/src/main/java/org/dromara/system/service/ISysUserService.java

@ -7,6 +7,7 @@ import org.dromara.system.domain.vo.SysUserExportVo;
import org.dromara.system.domain.vo.SysUserVo; import org.dromara.system.domain.vo.SysUserVo;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 用户 业务层 * 用户 业务层
@ -280,4 +281,11 @@ public interface ISysUserService {
List<SysUserVo> selectFlwByIds(List<Long> userIds, Long deptId); List<SysUserVo> selectFlwByIds(List<Long> userIds, Long deptId);
List<SysUserVo> allList(SysUserBo user); List<SysUserVo> allList(SysUserBo user);
/**
* 用于设备组添加成员,根据目标值类型查询
* @param params
* @return
*/
List<Map<String, Object>> listTargetTypeByUser(List<Map<String, Object>> params);
} }

4
dk-modules/system/src/main/java/org/dromara/system/service/impl/SysDepartBoundaryServiceImpl.java

@ -1,6 +1,8 @@
package org.dromara.system.service.impl; package org.dromara.system.service.impl;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@ -226,10 +228,10 @@ public class SysDepartBoundaryServiceImpl extends ServiceImpl<SysDepartBoundaryM
List<SysDeptVo> deptVoList = deptService.selectSecondByParentId(deptId); List<SysDeptVo> deptVoList = deptService.selectSecondByParentId(deptId);
List<Long> secondDeptIdList = StreamUtils.toList(deptVoList, SysDeptVo::getDeptId); List<Long> secondDeptIdList = StreamUtils.toList(deptVoList, SysDeptVo::getDeptId);
secondDeptIdList.add(deptId);
return this.baseMapper.listJson(secondDeptIdList.stream().distinct().toList()); return this.baseMapper.listJson(secondDeptIdList.stream().distinct().toList());
} }
/** /**

84
dk-modules/system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java

@ -37,9 +37,8 @@ import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList; import java.util.*;
import java.util.List; import java.util.stream.Collectors;
import java.util.Map;
/** /**
* 用户 业务层处理 * 用户 业务层处理
@ -613,6 +612,85 @@ public class SysUserServiceImpl implements ISysUserService {
return baseMapper.allList(user); return baseMapper.allList(user);
} }
/**
* 用于设备组添加成员,根据目标值类型查询
* @param params
* @return
*/
@Override
public List<Map<String, Object>> listTargetTypeByUser(List<Map<String, Object>> params) {
//1、定义返回值
List<Map<String, Object>> result = new ArrayList<>();
//2、根据传过来的集合中的目标值类型分组
Map<Integer, List<Map<String, Object>>> targetMap = params.stream().collect(Collectors.groupingBy(p -> Integer.valueOf(p.get("targetType") + "")));
//3、根据目标值的遍历
targetMap.keySet().forEach(targetType -> {
List<SysUser> currentUserList = new ArrayList<>();
//4、获取相应目标类型的目标值集合
List<Map<String, Object>> targetMapList = targetMap.get(targetType);
//5、如果为空则结束当前循环
if (ObjectUtil.isEmpty(targetMapList)) {
return;
}
//不为空再根据集合中的目标值转换成long集合
List<Long> targetKeyList = targetMapList.stream().map(p -> Long.valueOf(p.get("targetKey") + "")).distinct().toList();
//根据目标值类型找到对应的解析方法
switch (targetType) {
case 1:
currentUserList= this.baseMapper.selectList(new LambdaQueryWrapper<SysUser>().in(SysUser::getUserId, targetKeyList));
break;
case 2:
//角色
List<Long> userRoleIds = Optional.ofNullable(userRoleMapper.selectList(
new LambdaQueryWrapper<SysUserRole>()
.in(SysUserRole::getRoleId, targetKeyList)))
.orElse(List.of())
.stream()
.map(SysUserRole::getUserId)
.filter(Objects::nonNull)
.distinct()
.toList();
currentUserList = this.baseMapper.selectList(new LambdaQueryWrapper<SysUser>().in(SysUser::getDeptId, userRoleIds));
break;
case 3:
//部门
currentUserList = this.baseMapper.selectList(new LambdaQueryWrapper<SysUser>().in(SysUser::getDeptId, targetKeyList));
break;
default:
break;
}
//拿到目标值获取的信息进行构建返回格式
currentUserList.forEach(sysUser -> {
Map<String,Object> userMap = new HashMap<>();
//用户
userMap.put("userId",sysUser.getUserId());
userMap.put("userName",sysUser.getUserName());
userMap.put("nickName",sysUser.getNickName());
//防止重复存入
if (result.stream().noneMatch(p-> Long.valueOf(p.get("userId") + "").equals(sysUser.getUserId()))) {
result.add(userMap);
}
});
});
return result;
}
/** /**
* 通过用户ID查询用户账户 * 通过用户ID查询用户账户
* *

Loading…
Cancel
Save