|
|
@ -3,8 +3,10 @@ package com.fuyuanshen.modules.system.service.impl;
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
|
|
|
|
|
|
|
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.metadata.IPage;
|
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
|
|
|
|
|
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
|
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
|
import com.fuyuanshen.constants.DeviceConstants;
|
|
|
|
import com.fuyuanshen.constants.DeviceConstants;
|
|
|
@ -21,10 +23,7 @@ import com.fuyuanshen.modules.system.enums.BindingStatusEnum;
|
|
|
|
import com.fuyuanshen.modules.system.enums.DeviceActiveStatusEnum;
|
|
|
|
import com.fuyuanshen.modules.system.enums.DeviceActiveStatusEnum;
|
|
|
|
import com.fuyuanshen.modules.system.enums.DeviceAuthorizationStatus;
|
|
|
|
import com.fuyuanshen.modules.system.enums.DeviceAuthorizationStatus;
|
|
|
|
import com.fuyuanshen.modules.system.enums.DeviceStatusEnum;
|
|
|
|
import com.fuyuanshen.modules.system.enums.DeviceStatusEnum;
|
|
|
|
import com.fuyuanshen.modules.system.mapper.DeviceMapper;
|
|
|
|
import com.fuyuanshen.modules.system.mapper.*;
|
|
|
|
import com.fuyuanshen.modules.system.mapper.DeviceTypeGrantsMapper;
|
|
|
|
|
|
|
|
import com.fuyuanshen.modules.system.mapper.DeviceTypeMapper;
|
|
|
|
|
|
|
|
import com.fuyuanshen.modules.system.mapper.UserMapper;
|
|
|
|
|
|
|
|
import com.fuyuanshen.modules.system.mapper.app.APPDeviceMapper;
|
|
|
|
import com.fuyuanshen.modules.system.mapper.app.APPDeviceMapper;
|
|
|
|
import com.fuyuanshen.modules.system.service.DeviceAssignmentsService;
|
|
|
|
import com.fuyuanshen.modules.system.service.DeviceAssignmentsService;
|
|
|
|
import com.fuyuanshen.modules.system.service.DeviceService;
|
|
|
|
import com.fuyuanshen.modules.system.service.DeviceService;
|
|
|
@ -45,6 +44,7 @@ import org.springframework.web.multipart.MultipartFile;
|
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
|
import java.io.*;
|
|
|
|
import java.io.*;
|
|
|
|
import java.sql.Timestamp;
|
|
|
|
import java.sql.Timestamp;
|
|
|
|
|
|
|
|
import java.time.LocalDateTime;
|
|
|
|
import java.util.*;
|
|
|
|
import java.util.*;
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
|
@ -79,6 +79,7 @@ public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device> impleme
|
|
|
|
private final APPDeviceMapper appDeviceMapper;
|
|
|
|
private final APPDeviceMapper appDeviceMapper;
|
|
|
|
private final DeviceTypeGrantsMapper deviceTypeGrantsMapper;
|
|
|
|
private final DeviceTypeGrantsMapper deviceTypeGrantsMapper;
|
|
|
|
private final DeviceAssignmentsService deviceAssignmentsService;
|
|
|
|
private final DeviceAssignmentsService deviceAssignmentsService;
|
|
|
|
|
|
|
|
private final DeviceAssignmentsMapper deviceAssignmentsMapper;
|
|
|
|
private final DeviceTypeGrantsService deviceTypeGrantsService;
|
|
|
|
private final DeviceTypeGrantsService deviceTypeGrantsService;
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
@Autowired
|
|
|
@ -106,7 +107,7 @@ public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device> impleme
|
|
|
|
|
|
|
|
|
|
|
|
// 只能看到自己的创建的设备,以及被分配的设备。
|
|
|
|
// 只能看到自己的创建的设备,以及被分配的设备。
|
|
|
|
if (onlineuser.getTenantId() != null && !onlineuser.getTenantId().equals(UserConstants.SUPER_ADMIN_ID)) {
|
|
|
|
if (onlineuser.getTenantId() != null && !onlineuser.getTenantId().equals(UserConstants.SUPER_ADMIN_ID)) {
|
|
|
|
criteria.setTenantId(onlineuser.getTenantId());
|
|
|
|
// criteria.setTenantId(onlineuser.getTenantId());
|
|
|
|
criteria.setCurrentOwnerId(onlineuser.getId());
|
|
|
|
criteria.setCurrentOwnerId(onlineuser.getId());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -199,7 +200,7 @@ public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device> impleme
|
|
|
|
// 新增设备类型记录
|
|
|
|
// 新增设备类型记录
|
|
|
|
DeviceAssignments assignments = new DeviceAssignments();
|
|
|
|
DeviceAssignments assignments = new DeviceAssignments();
|
|
|
|
assignments.setDeviceId(device.getId());
|
|
|
|
assignments.setDeviceId(device.getId());
|
|
|
|
assignments.setAssignedAt(new Date());
|
|
|
|
assignments.setAssignedAt(LocalDateTime.now());
|
|
|
|
// 分配者
|
|
|
|
// 分配者
|
|
|
|
assignments.setAssignerId(currentUser.getId());
|
|
|
|
assignments.setAssignerId(currentUser.getId());
|
|
|
|
// 接收者
|
|
|
|
// 接收者
|
|
|
@ -297,7 +298,7 @@ public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device> impleme
|
|
|
|
deviceAssignments.setDeviceId(deviceId);
|
|
|
|
deviceAssignments.setDeviceId(deviceId);
|
|
|
|
deviceAssignments.setFromCustomerId(currentUser.getId());
|
|
|
|
deviceAssignments.setFromCustomerId(currentUser.getId());
|
|
|
|
deviceAssignments.setToCustomerId(customerVo.getCustomerId());
|
|
|
|
deviceAssignments.setToCustomerId(customerVo.getCustomerId());
|
|
|
|
deviceAssignments.setAssignedAt(new Date());
|
|
|
|
deviceAssignments.setAssignedAt(LocalDateTime.now());
|
|
|
|
deviceAssignments.setDeviceTypeGranted(DeviceAuthorizationStatus.AUTHORIZED.getValue());
|
|
|
|
deviceAssignments.setDeviceTypeGranted(DeviceAuthorizationStatus.AUTHORIZED.getValue());
|
|
|
|
assignments.add(deviceAssignments);
|
|
|
|
assignments.add(deviceAssignments);
|
|
|
|
|
|
|
|
|
|
|
@ -341,27 +342,61 @@ public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device> impleme
|
|
|
|
// 防止管理员误操作
|
|
|
|
// 防止管理员误操作
|
|
|
|
AdminCheckUtil.checkIfSuperAdmin(currentUser);
|
|
|
|
AdminCheckUtil.checkIfSuperAdmin(currentUser);
|
|
|
|
// 获取分配用户信息
|
|
|
|
// 获取分配用户信息
|
|
|
|
User user = userService.findById(customerVo.getCustomerId());
|
|
|
|
User assignUser = userService.findById(customerVo.getCustomerId());
|
|
|
|
|
|
|
|
|
|
|
|
// 获取分配设备信息
|
|
|
|
// 获取分配设备信息
|
|
|
|
List<Device> devices = deviceMapper.selectBatchIds(customerVo.getDeviceIds());
|
|
|
|
List<Device> devices = deviceMapper.selectBatchIds(customerVo.getDeviceIds());
|
|
|
|
|
|
|
|
|
|
|
|
// Timestamp timestamp = new Timestamp(System.currentTimeMillis());
|
|
|
|
|
|
|
|
for (Device device : devices) {
|
|
|
|
|
|
|
|
device.setCustomerId(user.getId());
|
|
|
|
|
|
|
|
device.setCustomerName(user.getNickName());
|
|
|
|
|
|
|
|
// device.setUpdateTime(timestamp);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
this.updateBatchById(devices);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 批量更新设备状态
|
|
|
|
// 批量更新设备状态
|
|
|
|
List<DeviceTypeGrants> deviceTypeGrants = new ArrayList<>();
|
|
|
|
List<DeviceTypeGrants> deviceTypeGrants = new ArrayList<>();
|
|
|
|
for (Device device : devices) {
|
|
|
|
for (Device device : devices) {
|
|
|
|
|
|
|
|
|
|
|
|
// 如果设备已分配给需要分配的客户,则跳过
|
|
|
|
// 如果设备已分配给需要分配的客户,则跳过
|
|
|
|
if (device.getCustomerId() != null && device.getCustomerId().equals(customerVo.getCustomerId())) {
|
|
|
|
LambdaQueryWrapper<DeviceAssignments> wrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
|
|
|
wrapper.eq(DeviceAssignments::getDeviceId, device.getId()).eq(DeviceAssignments::getAssigneeId, customerVo.getCustomerId()).ne(DeviceAssignments::getActive, DeviceActiveStatusEnum.INACTIVE.getCode());
|
|
|
|
|
|
|
|
List<DeviceAssignments> deviceAssignments = deviceAssignmentsMapper.selectList(wrapper);
|
|
|
|
|
|
|
|
if (CollectionUtil.isNotEmpty(deviceAssignments)) {
|
|
|
|
|
|
|
|
log.info("设备 {} 已分配给客户 {}", device.getDeviceName(), device.getCustomerName());
|
|
|
|
continue;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 更改分配客户
|
|
|
|
|
|
|
|
QueryWrapper<DeviceAssignments> q = new QueryWrapper<>();
|
|
|
|
|
|
|
|
q.eq("device_id", device.getId());
|
|
|
|
|
|
|
|
q.eq("assignee_id", currentUser.getId());
|
|
|
|
|
|
|
|
q.ne("active", DeviceActiveStatusEnum.INACTIVE.getCode());
|
|
|
|
|
|
|
|
DeviceAssignments d = new DeviceAssignments();
|
|
|
|
|
|
|
|
d.setAssigneeName(assignUser.getUsername());
|
|
|
|
|
|
|
|
deviceAssignmentsMapper.update(d, q);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 设备失效
|
|
|
|
|
|
|
|
// 获取用户的设备记录
|
|
|
|
|
|
|
|
DeviceAssignments assignment = deviceAssignmentsMapper.selectOne(new LambdaQueryWrapper<DeviceAssignments>().eq(DeviceAssignments::getDeviceId, device.getId()).eq(DeviceAssignments::getAssigneeId, currentUser.getId()).eq(DeviceAssignments::getActive, DeviceActiveStatusEnum.ACTIVE.getCode()));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LambdaQueryWrapper<DeviceAssignments> q1 = new LambdaQueryWrapper<>();
|
|
|
|
|
|
|
|
q1.eq(DeviceAssignments::getDeviceId, device.getId()).ne(DeviceAssignments::getAssigneeId, currentUser.getId()).like(DeviceAssignments::getLever, assignment.getLever());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DeviceAssignments d1 = new DeviceAssignments();
|
|
|
|
|
|
|
|
d1.setActive(DeviceActiveStatusEnum.INACTIVE.getCode());
|
|
|
|
|
|
|
|
deviceAssignmentsMapper.update(d1, q1);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// device.setCustomerId(assignUser.getId());
|
|
|
|
|
|
|
|
// device.setCustomerName(assignUser.getUsername());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 新增设备类型记录
|
|
|
|
|
|
|
|
DeviceAssignments assignments = new DeviceAssignments();
|
|
|
|
|
|
|
|
assignments.setDeviceId(device.getId());
|
|
|
|
|
|
|
|
assignments.setAssignedAt(LocalDateTime.now());
|
|
|
|
|
|
|
|
// 分配者
|
|
|
|
|
|
|
|
assignments.setAssignerId(currentUser.getId());
|
|
|
|
|
|
|
|
assignments.setAssignerName(currentUser.getUsername());
|
|
|
|
|
|
|
|
// 接收者
|
|
|
|
|
|
|
|
assignments.setAssigneeId(assignUser.getId());
|
|
|
|
|
|
|
|
// assignments.setAssigneeName(assignUser.getUsername());
|
|
|
|
|
|
|
|
assignments.setActive(DeviceActiveStatusEnum.ACTIVE.getCode());
|
|
|
|
|
|
|
|
String lever = assignment.getLever() + ":" + assignUser.getId();
|
|
|
|
|
|
|
|
assignments.setLever(lever);
|
|
|
|
|
|
|
|
deviceAssignmentsService.save(assignments);
|
|
|
|
|
|
|
|
|
|
|
|
// // 获取当前用户的所有祖先用户
|
|
|
|
// // 获取当前用户的所有祖先用户
|
|
|
|
// List<User> ancestorsById = userMapper.findAncestorsById(currentUser.getId());
|
|
|
|
// List<User> ancestorsById = userMapper.findAncestorsById(currentUser.getId());
|
|
|
@ -385,6 +420,9 @@ public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device> impleme
|
|
|
|
// 创建并保存设备类型授权记录
|
|
|
|
// 创建并保存设备类型授权记录
|
|
|
|
createAndSaveDeviceTypeGrants(device, currentUser, customerVo, deviceTypeGrants);
|
|
|
|
createAndSaveDeviceTypeGrants(device, currentUser, customerVo, deviceTypeGrants);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
this.updateBatchById(devices);
|
|
|
|
|
|
|
|
|
|
|
|
deviceTypeGrantsService.saveBatch(deviceTypeGrants);
|
|
|
|
deviceTypeGrantsService.saveBatch(deviceTypeGrants);
|
|
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
//
|
|
|
|