From 3fb692e7fbf5cf89964b88370e5ee985f8df0389 Mon Sep 17 00:00:00 2001 From: daiyongfei <974332738@qq.com> Date: Wed, 9 Jul 2025 16:29:25 +0800 Subject: [PATCH] =?UTF-8?q?web=EF=BC=9A=E6=92=A4=E5=9B=9E=E8=AE=BE?= =?UTF-8?q?=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/DeviceServiceImpl.java | 112 ++++++++++++------ .../mapper/equipment/DeviceMapper.xml | 2 +- 2 files changed, 76 insertions(+), 38 deletions(-) diff --git a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/service/impl/DeviceServiceImpl.java b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/service/impl/DeviceServiceImpl.java index 50c0aaf..a530180 100644 --- a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/service/impl/DeviceServiceImpl.java +++ b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/service/impl/DeviceServiceImpl.java @@ -3,7 +3,6 @@ package com.fuyuanshen.equipment.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.lang.UUID; -import cn.hutool.core.lang.generator.SnowflakeGenerator; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; @@ -42,7 +41,6 @@ import com.fuyuanshen.equipment.service.DeviceService; import com.fuyuanshen.equipment.service.DeviceTypeGrantsService; import com.fuyuanshen.system.domain.vo.SysOssVo; import com.fuyuanshen.system.service.ISysOssService; -import com.fuyuanshen.system.service.ISysUserService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; @@ -312,6 +310,12 @@ public class DeviceServiceImpl extends ServiceImpl impleme // 批量更新设备状态 List deviceTypeGrants = new ArrayList<>(); for (DeviceAssignments assignment : assignments) { + + if (assignment.getToCustomerId() != null) { + log.info("设备已经分配客户!!!"); + continue; + } + Device device = deviceMapper.selectById(assignment.getDeviceId()); // 如果设备已分配给需要分配的客户,则跳过 @@ -326,6 +330,7 @@ public class DeviceServiceImpl extends ServiceImpl impleme // 更改分配客户 assignment.setAssigneeName(assignUser.getNickName()); + assignment.setToCustomerId(customerVo.getCustomerId()); deviceAssignmentsMapper.updateById(assignment); // 设备失效 @@ -356,7 +361,9 @@ public class DeviceServiceImpl extends ServiceImpl impleme deviceAssignmentsService.save(dam); // 判断设备类型是否存在 - DeviceTypeGrants dtg = deviceTypeGrantsMapper.selectOne(new LambdaQueryWrapper().eq(DeviceTypeGrants::getDeviceTypeId, device.getId())); + DeviceTypeGrants dtg = deviceTypeGrantsMapper.selectOne(new LambdaQueryWrapper() + .eq(DeviceTypeGrants::getDeviceTypeId, device.getDeviceType()) + .eq(DeviceTypeGrants::getCustomerId, assignUser.getCustomerId())); if (dtg != null) { continue; } @@ -397,51 +404,82 @@ public class DeviceServiceImpl extends ServiceImpl impleme } + /** + * 撤回设备 + * + * @param ids + */ + // @Override + // public void withdrawDevice(List ids) { + // ids.forEach((id) -> { + // List deviceChain = getDeviceChain(id); + // deviceChain.forEach((device) -> { + // device.setDeviceStatus(DeviceStatusEnum.INVALID.getCode()); + // deviceMapper.updateById(device); + // }); + // }); + // + // ids.forEach((id) -> { + // Device device = new Device(); + // device.setId(id); + // device.setCustomerId(null); + // device.setCustomerName(""); + // deviceMapper.updateById(device); + // }); + // + // } + // + // + // public List getDeviceChain(Long originalDeviceId) { + // List chain = new ArrayList<>(); + // Set visited = new HashSet<>(); // 防止循环引用 + // findNext(chain, visited, originalDeviceId); + // return chain; + // } + // + // private void findNext(List chain, Set visited, Long currentOriginalDeviceId) { + // if (visited.contains(currentOriginalDeviceId)) { + // log.info("检测到循环引用,终止递归"); + // return; + // } + // visited.add(currentOriginalDeviceId); + // + // List devices = deviceMapper.findByOriginalDeviceId(currentOriginalDeviceId); + // for (Device device : devices) { + // chain.add(device); + // findNext(chain, visited, device.getId()); + // } + // } + + /** * 撤回设备 * * @param ids */ @Override + @Transactional public void withdrawDevice(List ids) { - ids.forEach((id) -> { - List deviceChain = getDeviceChain(id); - deviceChain.forEach((device) -> { - device.setDeviceStatus(DeviceStatusEnum.INVALID.getCode()); - deviceMapper.updateById(device); - }); - }); - ids.forEach((id) -> { - Device device = new Device(); - device.setId(id); - device.setCustomerId(null); - device.setCustomerName(""); - deviceMapper.updateById(device); - }); + for (Long id : ids) { + DeviceAssignments assignment = deviceAssignmentsMapper.selectById(id); + Device device = deviceMapper.selectById(assignment.getDeviceId()); + // 接收者 + assignment.setAssigneeName(""); + assignment.setToCustomerId(null); + deviceAssignmentsMapper.updateById(assignment); - } - - - public List getDeviceChain(Long originalDeviceId) { - List chain = new ArrayList<>(); - Set visited = new HashSet<>(); // 防止循环引用 - findNext(chain, visited, originalDeviceId); - return chain; - } - - private void findNext(List chain, Set visited, Long currentOriginalDeviceId) { - if (visited.contains(currentOriginalDeviceId)) { - log.info("检测到循环引用,终止递归"); - return; + // 获取所有已分配的设备 + DeviceAssignmentQuery dq = DeviceAssignmentQuery.builder().deviceId(device.getId()) + .active(DeviceActiveStatusEnum.ACTIVE.getCode()).lever(assignment.getLever() + USER_ID_SEPARATOR).build(); + // 查询分配 + List assignmentsList = deviceAssignmentsMapper.deviceAssignmentsMapper(dq); + for (DeviceAssignments assignments : assignmentsList) { + assignments.setActive(DeviceActiveStatusEnum.INACTIVE.getCode()); + deviceAssignmentsMapper.updateById(assignments); + } } - visited.add(currentOriginalDeviceId); - List devices = deviceMapper.findByOriginalDeviceId(currentOriginalDeviceId); - for (Device device : devices) { - chain.add(device); - findNext(chain, visited, device.getId()); - } } diff --git a/fys-modules/fys-equipment/src/main/resources/mapper/equipment/DeviceMapper.xml b/fys-modules/fys-equipment/src/main/resources/mapper/equipment/DeviceMapper.xml index 27a823c..4462a63 100644 --- a/fys-modules/fys-equipment/src/main/resources/mapper/equipment/DeviceMapper.xml +++ b/fys-modules/fys-equipment/src/main/resources/mapper/equipment/DeviceMapper.xml @@ -105,7 +105,7 @@ and da.create_time between #{criteria.params.beginTime} and #{criteria.params.endTime} AND da.assignee_id = #{criteria.currentOwnerId} - + AND dg.customer_id = #{criteria.currentOwnerId} ORDER BY da.create_time DESC