Browse Source

[feat]

1、修改设备组管理相关问题①
wuyuan
杨威 1 month ago
parent
commit
b776c64d65
  1. 26
      dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceProController.java
  2. 12
      dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/DeviceProDTO.java
  3. 2
      dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceProEntity.java
  4. 4
      dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceProService.java
  5. 130
      dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceProServiceImpl.java
  6. 24
      dk-modules/sample/src/main/resources/mapper/IDeviceProMapper.xml

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

@ -76,8 +76,8 @@ public class DeviceProController {
//3、删除项目组 //3、删除项目组
@Operation(summary = "删除项目组。", description = "删除项目组。") @Operation(summary = "删除项目组。", description = "删除项目组。")
@DeleteMapping("/delete") @DeleteMapping("/delete")
public HttpResultResponse<Boolean> deleteDevicePro(@RequestBody List<Integer> ids) { public HttpResultResponse<Boolean> deleteDevicePro(Integer id) {
return HttpResultResponse.success(deviceProService.deleteIds(ids)); return HttpResultResponse.success(deviceProService.deleteIds(List.of(id)));
} }
/** /**
@ -91,6 +91,24 @@ public class DeviceProController {
return HttpResultResponse.success(deviceProService.updateDeviceProUser(userEntity,proId)); return HttpResultResponse.success(deviceProService.updateDeviceProUser(userEntity,proId));
} }
@Operation(summary = "查询项目人员。", description = "查询项目人员")
@GetMapping("/{proId}/user/page")
public HttpResultResponse<PaginationData<DeviceProUserEntity>> pageProUser(@PathVariable Integer proId,
@RequestParam("searchValue") String searchValue,
@RequestParam(name = "pageNum", defaultValue = "1") Long page,
@RequestParam(name = "pageSize", defaultValue = "10") Long pageSize) {
Page<DeviceProUserEntity> pageQuery = new Page<>(page, pageSize);
return HttpResultResponse.success(deviceProService.pageProUser(searchValue,proId,pageQuery));
}
@Operation(summary = "删除项目人员", description = "删除项目人员")
@DeleteMapping("/{proId}/{proUserId}/user/delete")
public HttpResultResponse<Boolean> deleteProUser(@PathVariable Integer proId,
@PathVariable Long proUserId) {
return HttpResultResponse.success(deviceProService.deleteProUser(proUserId,proId));
}
/** /**
* 设备绑定项目组 * 设备绑定项目组
*/ */
@ -126,11 +144,11 @@ public class DeviceProController {
* 根据人员获取项目组(feign调用接口) * 根据人员获取项目组(feign调用接口)
*/ */
@GetMapping("/list/pro") @GetMapping("/list/pro")
public R<List<Integer>> listDeviceGroup(@RequestParam("userId") Long userId) { public HttpResultResponse<List<Integer>> listDeviceGroup(@RequestParam("userId") Long userId) {
log.info("----------------------------开始调用feign接口查询项目组----------------------------"); log.info("----------------------------开始调用feign接口查询项目组----------------------------");
List<Integer> result = deviceProService.listDeviceGroup(userId); List<Integer> result = deviceProService.listDeviceGroup(userId);
log.info("----------------------------调用feign接口查询项目组结束----------------------------"); log.info("----------------------------调用feign接口查询项目组结束----------------------------");
return R.ok(result); return HttpResultResponse.success(result);
} }
/** /**

12
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;
} }

2
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; private String bindCode;
@TableField(value = "bind_type") @TableField(value = "bind_type")
private Integer bindType; private Boolean bindType;
@TableField(value = "workspace_id") @TableField(value = "workspace_id")
private String workspaceId; private String workspaceId;

4
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 enablePro(Integer proId);
Boolean disablePro(Integer proId); Boolean disablePro(Integer proId);
PaginationData<DeviceProUserEntity> pageProUser(String searchValue, Integer proId,Page<DeviceProUserEntity> pageQuery);
Boolean deleteProUser(Long proUserId, Integer proId);
} }

130
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.manage.service.*;
import org.dromara.sample.websocket.service.IWebSocketMessageService; import org.dromara.sample.websocket.service.IWebSocketMessageService;
import org.dromara.system.api.model.LoginUser; import org.dromara.system.api.model.LoginUser;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -88,7 +89,6 @@ public class DeviceProServiceImpl implements IDeviceProService {
@Autowired @Autowired
private IDeviceProUserMapper deviceProUserMapper; private IDeviceProUserMapper deviceProUserMapper;
// private final ObjectMapper objectMapper = new ObjectMapper();
@Override @Override
public PaginationData<DeviceProEntity> listDeviceProEntityMap(Page page, DeviceProDTO deviceProDTO) { public PaginationData<DeviceProEntity> listDeviceProEntityMap(Page page, DeviceProDTO deviceProDTO) {
@ -100,10 +100,13 @@ public class DeviceProServiceImpl implements IDeviceProService {
@Override @Override
public Boolean updateDevicePro(DeviceProEntity deviceProEntity) { public Boolean updateDevicePro(DeviceProEntity deviceProEntity) {
if(ObjectUtil.isNotEmpty(deviceProEntity.getId())){ if(ObjectUtil.isNotEmpty(deviceProEntity.getId())){
DeviceProEntity devicePro = deviceProMapper.selectById(deviceProEntity.getId());
BeanUtils.copyProperties(deviceProEntity, devicePro);
return deviceProMapper.updateById(deviceProEntity) > 0 ; return deviceProMapper.updateById(deviceProEntity) > 0 ;
}else { }else {
deviceProEntity.setDeptName(LoginHelper.getDeptName()); deviceProEntity.setDeptName(LoginHelper.getDeptName());
deviceProEntity.setNickName(LoginHelper.getUsername()); deviceProEntity.setNickName(LoginHelper.getLoginUser().getNickname());
return deviceProMapper.insert(deviceProEntity) > 0; return deviceProMapper.insert(deviceProEntity) > 0;
} }
} }
@ -119,10 +122,6 @@ public class DeviceProServiceImpl implements IDeviceProService {
}); });
//todo人员是否要删除
List<DeviceProUserEntity> proUserEntityList = deviceProUserMapper.selectList(new LambdaQueryWrapper<DeviceProUserEntity>().in(DeviceProUserEntity::getDeviceProId, ids));
return deviceProMapper.deleteByIds(ids)>0; return deviceProMapper.deleteByIds(ids)>0;
} }
@ -130,78 +129,12 @@ public class DeviceProServiceImpl implements IDeviceProService {
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Boolean updateDeviceProUser(List<DeviceProUserEntity> userEntity,Integer proId) { public Boolean updateDeviceProUser(List<DeviceProUserEntity> userEntity,Integer proId) {
try { try {
//获取项目组信息 userEntity.forEach(deviceProUserEntity -> {
// DeviceProEntity deviceProEntity = deviceProMapper.selectOne(new LambdaQueryWrapper<DeviceProEntity>().eq(DeviceProEntity::getId, proId)); deviceProUserEntity.setNickName(LoginHelper.getLoginUser().getNickname());
deviceProUserEntity.setDeptName(LoginHelper.getDeptName());
//查询之前项目所属的人员信息 });
// List<DeviceProUserEntity> proUserEntityList = deviceProUserMapper.selectList(new LambdaQueryWrapper<DeviceProUserEntity>().eq(DeviceProUserEntity::getDeviceProId, proId));
//
// List<DeviceProUserEntity> difference = new ArrayList<>();
// 判断两个集合的差值(基于 userId)
// difference = proUserEntityList.stream()
// .filter(proUser -> userEntity.stream()
// .noneMatch(user -> user.getUserId().equals(proUser.getUserId())))
// .toList();
//--------------------------------------------缓存相关操作----------------------------------------------------------------
//人员如果解绑了项目删除缓存数据
// difference.forEach(proUserEntity -> {
// //删除人员项目组信息
// List<Object> projects = RedisUtils.getCacheList(String.format(Constants.PRO_GROUP, proUserEntity.getUserId()));
// List<Map> projectList = projects.stream()
// .filter(Map.class::isInstance)
// .map(Map.class::cast)
// .toList();
//
// //删除人员中所拥有的当前的项目组,然后构建新的存入redis
// List<Map> 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<Object> cacheList = RedisUtils.getCacheList(String.format(Constants.PRO_DEVICE, proUserEntity.getUserId()));
// List<Map> 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<DeviceProUserEntity>().eq(DeviceProUserEntity::getDeviceProId, proId));
if (ObjectUtil.isNotEmpty(userEntity)) {
//添加新的项目组成员 //添加新的项目组成员
deviceProUserMapper.insert(userEntity); deviceProUserMapper.insert(userEntity);
//更新缓存记录
// userEntity.forEach(proUserEntity -> {
// List<Object> projects = RedisUtils.getCacheList(String.format(Constants.PRO_GROUP, proUserEntity.getUserId()));
// List<Map> 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);
// }
// });
}
return true; return true;
} catch (ServiceException e) { } catch (ServiceException e) {
log.error(e.getMessage(),e); log.error(e.getMessage(),e);
@ -229,28 +162,8 @@ public class DeviceProServiceImpl implements IDeviceProService {
wrapper.set(DeviceEntity::getProId, proId); wrapper.set(DeviceEntity::getProId, proId);
wrapper.eq(DeviceEntity::getId, deviceId); wrapper.eq(DeviceEntity::getId, deviceId);
return deviceMapper.update(wrapper) > 0; return deviceMapper.update(wrapper) > 0;
// if (deviceMapper.update(wrapper) > 0) {
// DeviceEntity deviceEntity = deviceMapper.selectOne(new LambdaQueryWrapper<DeviceEntity>().eq(DeviceEntity::getId, deviceId));
// //根据proid获取人员用于存储人员的设备权限
// List<DeviceProUserEntity> proUserEntityList = deviceProUserMapper.selectList(new LambdaQueryWrapper<DeviceProUserEntity>().eq(DeviceProUserEntity::getDeviceProId, proId));
// proUserEntityList.forEach(deviceProUserEntity -> {
// List<Object> devices = RedisUtils.getCacheList(String.format(Constants.PRO_DEVICE, deviceProUserEntity.getUserId()));
// List<Map> 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) { } catch (Exception e) {
return false; return false;
} }
@ -270,6 +183,8 @@ public class DeviceProServiceImpl implements IDeviceProService {
List<Integer> proIdList = proUserEntityList.stream().map(DeviceProUserEntity::getDeviceProId).distinct().toList(); List<Integer> proIdList = proUserEntityList.stream().map(DeviceProUserEntity::getDeviceProId).distinct().toList();
LambdaQueryWrapper<DeviceProEntity> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<DeviceProEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.in(DeviceProEntity::getId, proIdList); queryWrapper.in(DeviceProEntity::getId, proIdList);
//查询是否启用的设备组
queryWrapper.eq(DeviceProEntity::getBindType,1);
return deviceProMapper.selectList(queryWrapper).stream().map(DeviceProEntity::getId).distinct().toList(); 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; return this.deviceProMapper.update(wrapper) > 0;
} }
@Override
public PaginationData<DeviceProUserEntity> pageProUser(String searchValue, Integer proId,Page<DeviceProUserEntity> pageQuery) {
LambdaQueryWrapper<DeviceProUserEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(DeviceProUserEntity::getDeviceProId,proId);
if (ObjectUtil.isNotEmpty(searchValue)){
wrapper.like(DeviceProUserEntity::getUserName,searchValue);
}
Page<DeviceProUserEntity> pagination = deviceProUserMapper.selectPage(pageQuery, wrapper);
return new PaginationData<DeviceProUserEntity>(pagination.getRecords(), new Pagination(pagination.getCurrent(), pagination.getSize(), pagination.getTotal()));
}
@Override
public Boolean deleteProUser(Long proUserId, Integer proId) {
LambdaQueryWrapper<DeviceProUserEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(DeviceProUserEntity::getDeviceProId,proId);
wrapper.eq(DeviceProUserEntity::getId,proUserId);
return deviceProUserMapper.delete(wrapper) > 0;
}
@Override @Override
public Boolean saveAndUpdate(DeviceProEntity entity) { public Boolean saveAndUpdate(DeviceProEntity entity) {
boolean flag = true; boolean flag = true;

24
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"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.sample.manage.mapper.IDeviceProMapper"> <mapper namespace="org.dromara.sample.manage.mapper.IDeviceProMapper">
<resultMap id="listDeviceProEntityMap" type="org.dromara.sample.manage.model.entity.DeviceProEntity"> <resultMap id="listDeviceProEntityMap" type="org.dromara.sample.manage.model.entity.DeviceProEntity">
<result column="pro_id" property="id" jdbcType="VARCHAR"/> <result column="pro_id" property="id"/>
<result column="pro_name" property="proName" jdbcType="VARCHAR"/> <result column="pro_name" property="proName"/>
<result column="bind_code" property="bindCode" jdbcType="VARCHAR"/> <result column="bind_code" property="bindCode"/>
<result column="bind_type" property="bindType" jdbcType="VARCHAR"/> <result column="bind_type" property="bindType"/>
<result column="nick_name" property="nickName"/>
<result column="create_time" property="createTime"/>
<collection property="deviceProUserEntityList" ofType="org.dromara.sample.manage.model.entity.DeviceProUserEntity"> <collection property="deviceProUserEntityList" ofType="org.dromara.sample.manage.model.entity.DeviceProUserEntity">
<result column="pro_user_id" property="id"/> <result column="pro_user_id" property="id"/>
<result column="device_pro_id" property="deviceProId"/> <result column="device_pro_id" property="deviceProId"/>
<result column="user_id" property="userId"/> <result column="user_id" property="userId"/>
<result column="nick_name" property="nickName"/> <result column="user_name" property="userName"/>
</collection> </collection>
<collection property="deviceEntityList" ofType="org.dromara.sample.manage.model.entity.DeviceEntity"> <collection property="deviceEntityList" ofType="org.dromara.sample.manage.model.entity.DeviceEntity">
<result column="device_id" property="id"/> <result column="device_id" property="id"/>
@ -33,10 +35,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
dp.pro_name, dp.pro_name,
dp.bind_code, dp.bind_code,
dp.bind_type, 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.device_pro_id,
dpu.user_id, dpu.user_id,
dpu.nick_name, dpu.user_name,
d.id device_id, d.id device_id,
d.device_sn, d.device_sn,
d.device_name, d.device_name,
@ -64,6 +68,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="condition.userId != null and condition.userId != ''"> <if test="condition.userId != null and condition.userId != ''">
and dpu.user_id = #{condition.userId} and dpu.user_id = #{condition.userId}
</if> </if>
<if test="condition.bindCode != null and condition.bindCode != ''">
and dp.bind_code like concat(concat('%',#{condition.bindCode}),'%')
</if>
<if test="condition.proName != null and condition.proName != ''">
and dp.pro_name like concat(concat('%',#{condition.proName}),'%')
</if>
</where> </where>
</select> </select>
</mapper> </mapper>

Loading…
Cancel
Save