分配设备

This commit is contained in:
2025-06-20 18:42:20 +08:00
parent 7549219213
commit b11d3ccd61
4 changed files with 48 additions and 19 deletions

View File

@ -35,9 +35,17 @@ public class Device extends BaseEntity implements Serializable {
@ApiModelProperty(value = "客户号")
private Long customerId;
/**
* 当前所有者
* current_owner_id
*/
@ApiModelProperty(value = "当前所有者")
private Long currentOwnerId;
/**
* 原始所有者(创建者)
* original_owner_id
*/
@ApiModelProperty(value = "原始所有者(创建者)")
private Long originalOwnerId;

View File

@ -25,6 +25,9 @@ public class DeviceQueryCriteria {
@ApiModelProperty(value = "设备MAC")
private String deviceMac;
@ApiModelProperty(value = "设备IMEI")
private String deviceImei;
@ApiModelProperty(value = "设备SN")
private String deviceSn;

View File

@ -97,8 +97,8 @@ public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device> impleme
// 只能看到自己的创建的设备,以及被分配的设备。
if (onlineuser.getTenantId() != null && !onlineuser.getTenantId().equals(UserConstants.SUPER_ADMIN_ID)) {
// criteria.setTenantId(onlineuser.getTenantId());
criteria.setCurrentOwnerId(onlineuser.getId());
criteria.setTenantId(onlineuser.getTenantId());
// criteria.setCurrentOwnerId(onlineuser.getId());
}
IPage<Device> devices = deviceMapper.findAll(criteria, page);
@ -242,13 +242,12 @@ public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device> impleme
/**
* 分配客户
* 分配客户 历史记录版本
*
* @param customerVo
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void assignCustomer(CustomerVo customerVo) {
public void assignCustomer1(CustomerVo customerVo) {
// 防止管理员误操作
User currentUser = userService.findById(SecurityUtils.getCurrentUserId());
@ -296,7 +295,7 @@ public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device> impleme
// -- 更新设备所有者
device.setCurrentOwnerId(customerVo.getCustomerId());
devices.add( device);
devices.add(device);
});
deviceAssignmentsService.saveBatch(assignments);
@ -307,11 +306,13 @@ public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device> impleme
/**
* 分配客户代码复制
* 分配客户
*
* @param customerVo
*/
public void assignCustomer1(CustomerVo customerVo) {
@Override
@Transactional(rollbackFor = Exception.class)
public void assignCustomer(CustomerVo customerVo) {
// 防止管理员误操作
User currentUser = userService.findById(SecurityUtils.getCurrentUserId());
@ -330,6 +331,7 @@ public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device> impleme
this.updateBatchById(devices);
// 批量更新设备状态
List<DeviceTypeGrants> deviceTypeGrants = new ArrayList<>();
for (Device device : devices) {
// 获取当前用户的所有祖先用户
List<User> ancestorsById = userMapper.findAncestorsById(currentUser.getId());
@ -349,7 +351,24 @@ public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device> impleme
// 根据条件批量更新
deviceMapper.update(updateDevice, wrapper);
// 自定义16位id
Long generatedId = NanoId.generate(16);
// -- 授权设备类型给客户
// QueryWrapper<DeviceTypeGrants> deviceTypeGrantsQueryWrapper = new QueryWrapper<>();
// Long count = deviceTypeGrantsMapper.selectCount(deviceTypeGrantsQueryWrapper);
DeviceTypeGrants deviceTypeGrant = new DeviceTypeGrants();
deviceTypeGrant.setGrantedAt(new Date());
// 设备类型
deviceTypeGrant.setDeviceTypeId(device.getDeviceType());
deviceTypeGrant.setAssignmentId(generatedId);
// 被授权的客户
deviceTypeGrant.setCustomerId(customerVo.getCustomerId());
// 授权方客户
deviceTypeGrant.setGrantorCustomerId(currentUser.getId());
deviceTypeGrants.add(deviceTypeGrant);
}
deviceTypeGrantsService.saveBatch(deviceTypeGrants);
// 批量分配
Set<DeviceType> deviceTypes = new HashSet<>();

View File

@ -39,11 +39,12 @@
<!-- 分页查询设备 -->
<select id="findAll" resultType="com.fuyuanshen.modules.system.domain.Device">
select
<include refid="device_Column_List"/>,
t.type_name as typeName
d.id, d.customer_id, d.customer_name, d.device_name,
d.device_pic, d.device_mac, d.device_sn, d.create_by, d.update_by,d.device_imei,
d.create_time, d.update_time, d.device_type, d.remark, d.device_status, d.binding_status,t.type_name
from device d
left join device_type t on d.device_type = t.id
left join device_assignments da on d.current_owner_id = da.from_customer_id
left join device_type t
on d.device_type = t.id
<where>
<!-- 时间范围等其他条件保持原样 -->
<if test="criteria.deviceName != null and criteria.deviceName.trim() != ''">
@ -52,8 +53,8 @@
<if test="criteria.deviceMac != null">
and d.device_mac = #{criteria.deviceMac}
</if>
<if test="criteria.deviceSn != null">
and d.device_sn = #{criteria.deviceSn}
<if test="criteria.deviceImei != null">
and d.device_imei = #{criteria.deviceImei}
</if>
<if test="criteria.deviceType != null">
and d.device_type = #{criteria.deviceType}
@ -65,8 +66,8 @@
and d.create_time between #{criteria.createTime[0]} and #{criteria.createTime[1]}
</if>
<if test="criteria.currentOwnerId != null">
AND (current_owner_id = #{criteria.currentOwnerId} OR da.from_customer_id = #{criteria.currentOwnerId})
<if test="criteria.tenantId != null">
AND tenant_id = #{criteria.tenantId}
</if>
@ -80,8 +81,6 @@
<!-- <if test="criteria.customerId == null"> -->
<!-- AND tenant_id = #{criteria.tenantId} -->
<!-- </if> -->
</where>
order by d.id desc