diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceProController.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceProController.java index 52bce09..8825a83 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceProController.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceProController.java @@ -76,8 +76,8 @@ public class DeviceProController { //3、删除项目组 @Operation(summary = "删除项目组。", description = "删除项目组。") @DeleteMapping("/delete") - public HttpResultResponse deleteDevicePro(@RequestBody List ids) { - return HttpResultResponse.success(deviceProService.deleteIds(ids)); + public HttpResultResponse deleteDevicePro(Integer id) { + return HttpResultResponse.success(deviceProService.deleteIds(List.of(id))); } /** @@ -91,6 +91,24 @@ public class DeviceProController { return HttpResultResponse.success(deviceProService.updateDeviceProUser(userEntity,proId)); } + + @Operation(summary = "查询项目人员。", description = "查询项目人员") + @GetMapping("/{proId}/user/page") + public HttpResultResponse> pageProUser(@PathVariable Integer proId, + @RequestParam("searchValue") String searchValue, + @RequestParam(name = "pageNum", defaultValue = "1") Long page, + @RequestParam(name = "pageSize", defaultValue = "10") Long pageSize) { + Page pageQuery = new Page<>(page, pageSize); + return HttpResultResponse.success(deviceProService.pageProUser(searchValue,proId,pageQuery)); + } + + @Operation(summary = "删除项目人员", description = "删除项目人员") + @DeleteMapping("/{proId}/{proUserId}/user/delete") + public HttpResultResponse deleteProUser(@PathVariable Integer proId, + @PathVariable Long proUserId) { + return HttpResultResponse.success(deviceProService.deleteProUser(proUserId,proId)); + } + /** * 设备绑定项目组 */ @@ -126,11 +144,11 @@ public class DeviceProController { * 根据人员获取项目组(feign调用接口) */ @GetMapping("/list/pro") - public R> listDeviceGroup(@RequestParam("userId") Long userId) { + public HttpResultResponse> listDeviceGroup(@RequestParam("userId") Long userId) { log.info("----------------------------开始调用feign接口查询项目组----------------------------"); List result = deviceProService.listDeviceGroup(userId); log.info("----------------------------调用feign接口查询项目组结束----------------------------"); - return R.ok(result); + return HttpResultResponse.success(result); } /** diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/DeviceProDTO.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/DeviceProDTO.java index 7283c78..578025f 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/DeviceProDTO.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/DeviceProDTO.java @@ -43,5 +43,15 @@ public class DeviceProDTO { /** 分配人员 */ - private Integer userId; + private Long userId; + + /** + * 设备组编码 + */ + private String bindCode; + + /** + * 设备组名称 + */ + private String proName; } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceProEntity.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceProEntity.java index a7b67f3..691b7df 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceProEntity.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceProEntity.java @@ -37,7 +37,7 @@ public class DeviceProEntity extends BaseEntity implements Serializable { private String bindCode; @TableField(value = "bind_type") - private Integer bindType; + private Boolean bindType; @TableField(value = "workspace_id") private String workspaceId; diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceProService.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceProService.java index df2f3ba..b091787 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceProService.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceProService.java @@ -49,4 +49,8 @@ public interface IDeviceProService { Boolean enablePro(Integer proId); Boolean disablePro(Integer proId); + + PaginationData pageProUser(String searchValue, Integer proId,Page pageQuery); + + Boolean deleteProUser(Long proUserId, Integer proId); } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceProServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceProServiceImpl.java index 1962460..0e82616 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceProServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceProServiceImpl.java @@ -59,6 +59,7 @@ import org.dromara.sample.manage.model.receiver.BasicDeviceProperty; import org.dromara.sample.manage.service.*; import org.dromara.sample.websocket.service.IWebSocketMessageService; import org.dromara.system.api.model.LoginUser; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -88,7 +89,6 @@ public class DeviceProServiceImpl implements IDeviceProService { @Autowired private IDeviceProUserMapper deviceProUserMapper; -// private final ObjectMapper objectMapper = new ObjectMapper(); @Override public PaginationData listDeviceProEntityMap(Page page, DeviceProDTO deviceProDTO) { @@ -100,10 +100,13 @@ public class DeviceProServiceImpl implements IDeviceProService { @Override public Boolean updateDevicePro(DeviceProEntity deviceProEntity) { if(ObjectUtil.isNotEmpty(deviceProEntity.getId())){ + DeviceProEntity devicePro = deviceProMapper.selectById(deviceProEntity.getId()); + BeanUtils.copyProperties(deviceProEntity, devicePro); + return deviceProMapper.updateById(deviceProEntity) > 0 ; }else { deviceProEntity.setDeptName(LoginHelper.getDeptName()); - deviceProEntity.setNickName(LoginHelper.getUsername()); + deviceProEntity.setNickName(LoginHelper.getLoginUser().getNickname()); return deviceProMapper.insert(deviceProEntity) > 0; } } @@ -119,10 +122,6 @@ public class DeviceProServiceImpl implements IDeviceProService { }); - //todo人员是否要删除 - List proUserEntityList = deviceProUserMapper.selectList(new LambdaQueryWrapper().in(DeviceProUserEntity::getDeviceProId, ids)); - - return deviceProMapper.deleteByIds(ids)>0; } @@ -130,78 +129,12 @@ public class DeviceProServiceImpl implements IDeviceProService { @Transactional(rollbackFor = Exception.class) public Boolean updateDeviceProUser(List userEntity,Integer proId) { try { - //获取项目组信息 -// DeviceProEntity deviceProEntity = deviceProMapper.selectOne(new LambdaQueryWrapper().eq(DeviceProEntity::getId, proId)); - - //查询之前项目所属的人员信息 -// List proUserEntityList = deviceProUserMapper.selectList(new LambdaQueryWrapper().eq(DeviceProUserEntity::getDeviceProId, proId)); -// -// List difference = new ArrayList<>(); - - // 判断两个集合的差值(基于 userId) -// difference = proUserEntityList.stream() -// .filter(proUser -> userEntity.stream() -// .noneMatch(user -> user.getUserId().equals(proUser.getUserId()))) -// .toList(); - - //--------------------------------------------缓存相关操作---------------------------------------------------------------- - - //人员如果解绑了项目删除缓存数据 -// difference.forEach(proUserEntity -> { -// //删除人员项目组信息 -// List projects = RedisUtils.getCacheList(String.format(Constants.PRO_GROUP, proUserEntity.getUserId())); -// List projectList = projects.stream() -// .filter(Map.class::isInstance) -// .map(Map.class::cast) -// .toList(); -// -// //删除人员中所拥有的当前的项目组,然后构建新的存入redis -// List deviceProEntities = projectList.stream().filter(p -> !Integer.valueOf(p.get("id") + "").equals(proId)).toList(); -// //删除 -// RedisUtils.deleteObject(String.format(Constants.PRO_GROUP, proUserEntity.getUserId())); -// //重新插入 -// RedisUtils.setCacheList(String.format(Constants.PRO_GROUP, proUserEntity.getUserId()),deviceProEntities); -// -// -// //删除人员所拥有的设备信息 -// List cacheList = RedisUtils.getCacheList(String.format(Constants.PRO_DEVICE, proUserEntity.getUserId())); -// List deviceList = cacheList.stream() -// .filter(Map.class::isInstance) -// .map(Map.class::cast) -// .toList(); -// -// //过滤除了这个删除的项目组之外的设备 -// deviceList = deviceList.stream().filter(p-> !Integer.valueOf(p.get("proId") + "").equals(proId)).toList(); -// //删除 -// RedisUtils.deleteObject(String.format(Constants.PRO_DEVICE, proUserEntity.getUserId())); -// -// RedisUtils.setCacheList(String.format(Constants.PRO_DEVICE, proUserEntity.getUserId()),deviceList); -// }); - - //--------------------------------------------缓存相关操作---------------------------------------------------------------- - - //先清除原来的项目组成员 - deviceProUserMapper.delete(new LambdaQueryWrapper().eq(DeviceProUserEntity::getDeviceProId, proId)); - - if (ObjectUtil.isNotEmpty(userEntity)) { - //添加新的项目组成员 - deviceProUserMapper.insert(userEntity); - - //更新缓存记录 -// userEntity.forEach(proUserEntity -> { -// List projects = RedisUtils.getCacheList(String.format(Constants.PRO_GROUP, proUserEntity.getUserId())); -// List projectList = projects.stream() -// .filter(Map.class::isInstance) -// .map(Map.class::cast) -// .toList(); -// -// if (!projectList.stream().anyMatch(p-> Integer.valueOf(p.get("id") + "").equals(proUserEntity.getDeviceProId()))){ -// Map proMap = objectMapper.convertValue(deviceProEntity, Map.class); -// RedisUtils.addCacheList(String.format(Constants.PRO_GROUP, proUserEntity.getUserId()), proMap); -// } -// }); - } - + userEntity.forEach(deviceProUserEntity -> { + deviceProUserEntity.setNickName(LoginHelper.getLoginUser().getNickname()); + deviceProUserEntity.setDeptName(LoginHelper.getDeptName()); + }); + //添加新的项目组成员 + deviceProUserMapper.insert(userEntity); return true; } catch (ServiceException e) { log.error(e.getMessage(),e); @@ -229,28 +162,8 @@ public class DeviceProServiceImpl implements IDeviceProService { wrapper.set(DeviceEntity::getProId, proId); wrapper.eq(DeviceEntity::getId, deviceId); - return deviceMapper.update(wrapper) > 0; - -// if (deviceMapper.update(wrapper) > 0) { -// DeviceEntity deviceEntity = deviceMapper.selectOne(new LambdaQueryWrapper().eq(DeviceEntity::getId, deviceId)); -// //根据proid获取人员用于存储人员的设备权限 -// List proUserEntityList = deviceProUserMapper.selectList(new LambdaQueryWrapper().eq(DeviceProUserEntity::getDeviceProId, proId)); -// proUserEntityList.forEach(deviceProUserEntity -> { -// List devices = RedisUtils.getCacheList(String.format(Constants.PRO_DEVICE, deviceProUserEntity.getUserId())); -// List deviceList = devices.stream() -// .filter(Map.class::isInstance) -// .map(Map.class::cast) -// .toList(); -// -// if (!deviceList.stream().anyMatch(p-> Integer.valueOf(p.get("id") + "").equals(deviceEntity.getId()))){ -// Map deviceMap = objectMapper.convertValue(deviceEntity, Map.class); -// -// RedisUtils.addCacheList(String.format(Constants.PRO_DEVICE, deviceProUserEntity.getUserId()), deviceMap); -// } -// }); -// } } catch (Exception e) { return false; } @@ -270,6 +183,8 @@ public class DeviceProServiceImpl implements IDeviceProService { List proIdList = proUserEntityList.stream().map(DeviceProUserEntity::getDeviceProId).distinct().toList(); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.in(DeviceProEntity::getId, proIdList); + //查询是否启用的设备组 + queryWrapper.eq(DeviceProEntity::getBindType,1); return deviceProMapper.selectList(queryWrapper).stream().map(DeviceProEntity::getId).distinct().toList(); } @@ -323,6 +238,29 @@ public class DeviceProServiceImpl implements IDeviceProService { return this.deviceProMapper.update(wrapper) > 0; } + @Override + public PaginationData pageProUser(String searchValue, Integer proId,Page pageQuery) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(DeviceProUserEntity::getDeviceProId,proId); + + if (ObjectUtil.isNotEmpty(searchValue)){ + wrapper.like(DeviceProUserEntity::getUserName,searchValue); + } + + Page pagination = deviceProUserMapper.selectPage(pageQuery, wrapper); + + return new PaginationData(pagination.getRecords(), new Pagination(pagination.getCurrent(), pagination.getSize(), pagination.getTotal())); + + } + + @Override + public Boolean deleteProUser(Long proUserId, Integer proId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(DeviceProUserEntity::getDeviceProId,proId); + wrapper.eq(DeviceProUserEntity::getId,proUserId); + return deviceProUserMapper.delete(wrapper) > 0; + } + @Override public Boolean saveAndUpdate(DeviceProEntity entity) { boolean flag = true; diff --git a/dk-modules/sample/src/main/resources/mapper/IDeviceProMapper.xml b/dk-modules/sample/src/main/resources/mapper/IDeviceProMapper.xml index ba1fa69..543270f 100644 --- a/dk-modules/sample/src/main/resources/mapper/IDeviceProMapper.xml +++ b/dk-modules/sample/src/main/resources/mapper/IDeviceProMapper.xml @@ -4,15 +4,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - - - - + + + + + + - + @@ -33,10 +35,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" dp.pro_name, dp.bind_code, dp.bind_type, - dpu.user_id pro_user_id, + dp.nick_name, + dp.create_time, + dpu.id pro_user_id, dpu.device_pro_id, dpu.user_id, - dpu.nick_name, + dpu.user_name, d.id device_id, d.device_sn, d.device_name, @@ -64,6 +68,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and dpu.user_id = #{condition.userId} + + and dp.bind_code like concat(concat('%',#{condition.bindCode}),'%') + + + and dp.pro_name like concat(concat('%',#{condition.proName}),'%') +