分配设备

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 = "客户号") @ApiModelProperty(value = "客户号")
private Long customerId; private Long customerId;
/**
* 当前所有者
* current_owner_id
*/
@ApiModelProperty(value = "当前所有者") @ApiModelProperty(value = "当前所有者")
private Long currentOwnerId; private Long currentOwnerId;
/**
* 原始所有者(创建者)
* original_owner_id
*/
@ApiModelProperty(value = "原始所有者(创建者)") @ApiModelProperty(value = "原始所有者(创建者)")
private Long originalOwnerId; private Long originalOwnerId;

View File

@ -25,6 +25,9 @@ public class DeviceQueryCriteria {
@ApiModelProperty(value = "设备MAC") @ApiModelProperty(value = "设备MAC")
private String deviceMac; private String deviceMac;
@ApiModelProperty(value = "设备IMEI")
private String deviceImei;
@ApiModelProperty(value = "设备SN") @ApiModelProperty(value = "设备SN")
private String deviceSn; 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)) { 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());
} }
IPage<Device> devices = deviceMapper.findAll(criteria, page); IPage<Device> devices = deviceMapper.findAll(criteria, page);
@ -242,13 +242,12 @@ public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device> impleme
/** /**
* 分配客户 * 分配客户 历史记录版本
* *
* @param customerVo * @param customerVo
*/ */
@Override
@Transactional(rollbackFor = Exception.class) public void assignCustomer1(CustomerVo customerVo) {
public void assignCustomer(CustomerVo customerVo) {
// 防止管理员误操作 // 防止管理员误操作
User currentUser = userService.findById(SecurityUtils.getCurrentUserId()); User currentUser = userService.findById(SecurityUtils.getCurrentUserId());
@ -296,7 +295,7 @@ public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device> impleme
// -- 更新设备所有者 // -- 更新设备所有者
device.setCurrentOwnerId(customerVo.getCustomerId()); device.setCurrentOwnerId(customerVo.getCustomerId());
devices.add( device); devices.add(device);
}); });
deviceAssignmentsService.saveBatch(assignments); deviceAssignmentsService.saveBatch(assignments);
@ -307,11 +306,13 @@ public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device> impleme
/** /**
* 分配客户代码复制 * 分配客户
* *
* @param customerVo * @param customerVo
*/ */
public void assignCustomer1(CustomerVo customerVo) { @Override
@Transactional(rollbackFor = Exception.class)
public void assignCustomer(CustomerVo customerVo) {
// 防止管理员误操作 // 防止管理员误操作
User currentUser = userService.findById(SecurityUtils.getCurrentUserId()); User currentUser = userService.findById(SecurityUtils.getCurrentUserId());
@ -330,6 +331,7 @@ public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device> impleme
this.updateBatchById(devices); this.updateBatchById(devices);
// 批量更新设备状态 // 批量更新设备状态
List<DeviceTypeGrants> deviceTypeGrants = new ArrayList<>();
for (Device device : devices) { for (Device device : devices) {
// 获取当前用户的所有祖先用户 // 获取当前用户的所有祖先用户
List<User> ancestorsById = userMapper.findAncestorsById(currentUser.getId()); List<User> ancestorsById = userMapper.findAncestorsById(currentUser.getId());
@ -349,7 +351,24 @@ public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device> impleme
// 根据条件批量更新 // 根据条件批量更新
deviceMapper.update(updateDevice, wrapper); 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<>(); Set<DeviceType> deviceTypes = new HashSet<>();

View File

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