From dcbe9c4dd2e8f08cb1e2c60f89d8d429382bda27 Mon Sep 17 00:00:00 2001 From: daiyongfei <974332738@qq.com> Date: Mon, 23 Jun 2025 10:53:29 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E7=B1=BB=E5=9E=8B=E5=AF=BC?= =?UTF-8?q?=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/security/rest/AuthController.java | 7 ---- .../listener/excel/DeviceImportParams.java | 2 + .../excel/UploadDeviceDataListener.java | 20 +++++++++ .../modules/system/rest/DeviceController.java | 35 ++++++++-------- .../service/impl/DeviceServiceImpl.java | 42 ++++++++++++++++--- .../resources/mapper/system/DeviceMapper.xml | 7 ++-- .../mapper/system/DeviceTypeMapper.xml | 4 +- 7 files changed, 80 insertions(+), 37 deletions(-) diff --git a/fys-system/src/main/java/com/fuyuanshen/modules/security/rest/AuthController.java b/fys-system/src/main/java/com/fuyuanshen/modules/security/rest/AuthController.java index 2ddfd7a..a32331d 100644 --- a/fys-system/src/main/java/com/fuyuanshen/modules/security/rest/AuthController.java +++ b/fys-system/src/main/java/com/fuyuanshen/modules/security/rest/AuthController.java @@ -141,17 +141,11 @@ public class AuthController { } - - - - - @Log("app用户登录") @ApiOperation("app用户登录") @AnonymousPostMapping(value = "/app/login") public ResponseEntity APPLogin(@Validated @RequestBody AppAuthUserDto authUser, HttpServletRequest request) throws Exception { - // 1. 构建查询参数 APPUserQuery appUserQuery = new APPUserQuery(); appUserQuery.setPhoneNumber(authUser.getPhoneNumber()); @@ -172,7 +166,6 @@ public class AuthController { throw new BadRequestException("登录密码错误"); } - // 4. 加载用户详情 JwtUserDto jwtUser = userDetailsService.loadUserByUsername(appUser.getUsername(),appUser.getUserType()); diff --git a/fys-system/src/main/java/com/fuyuanshen/modules/system/listener/excel/DeviceImportParams.java b/fys-system/src/main/java/com/fuyuanshen/modules/system/listener/excel/DeviceImportParams.java index 9246cf1..edbdd49 100644 --- a/fys-system/src/main/java/com/fuyuanshen/modules/system/listener/excel/DeviceImportParams.java +++ b/fys-system/src/main/java/com/fuyuanshen/modules/system/listener/excel/DeviceImportParams.java @@ -3,6 +3,7 @@ package com.fuyuanshen.modules.system.listener.excel; import com.fuyuanshen.modules.system.mapper.DeviceMapper; import com.fuyuanshen.modules.system.mapper.DeviceTypeMapper; import com.fuyuanshen.modules.system.mapper.UserMapper; +import com.fuyuanshen.modules.system.service.DeviceAssignmentsService; import com.fuyuanshen.modules.system.service.DeviceService; import lombok.*; import org.springframework.web.multipart.MultipartFile; @@ -19,6 +20,7 @@ import org.springframework.web.multipart.MultipartFile; public class DeviceImportParams { private DeviceService deviceService; + private DeviceAssignmentsService deviceAssignmentsService; private DeviceMapper deviceMapper; private UserMapper userMapper; private DeviceTypeMapper deviceTypeMapper; diff --git a/fys-system/src/main/java/com/fuyuanshen/modules/system/listener/excel/UploadDeviceDataListener.java b/fys-system/src/main/java/com/fuyuanshen/modules/system/listener/excel/UploadDeviceDataListener.java index 5195113..d065e49 100644 --- a/fys-system/src/main/java/com/fuyuanshen/modules/system/listener/excel/UploadDeviceDataListener.java +++ b/fys-system/src/main/java/com/fuyuanshen/modules/system/listener/excel/UploadDeviceDataListener.java @@ -7,9 +7,13 @@ import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.read.listener.ReadListener; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.fuyuanshen.modules.system.domain.DeviceAssignments; import com.fuyuanshen.modules.system.domain.DeviceType; +import com.fuyuanshen.modules.system.domain.User; import com.fuyuanshen.modules.system.domain.dto.DeviceQueryCriteria; +import com.fuyuanshen.modules.system.enums.DeviceActiveStatusEnum; import com.fuyuanshen.modules.system.mapper.UserMapper; +import com.fuyuanshen.utils.SecurityUtils; import lombok.extern.slf4j.Slf4j; import com.fuyuanshen.constants.DeviceConstants; import com.fuyuanshen.modules.system.domain.Device; @@ -24,6 +28,7 @@ import org.springframework.web.multipart.MultipartFile; import java.io.File; import java.nio.file.Files; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -149,6 +154,7 @@ public class UploadDeviceDataListener implements ReadListener impleme /** - * 删除设备分配记录 + * 删除设备分配记录(分配记录id) + * + * @param ids + */ + public void deleteAssign1(List ids) { + Long currentUserId = SecurityUtils.getCurrentUserId(); + // Step 1: 查询所有传入的设备(根据 ID) + // List deviceAssignments = deviceAssignmentsMapper.selectBatchIds(ids); + QueryWrapper wrapper = new QueryWrapper<>(); + // wrapper.eq("active", DeviceActiveStatusEnum.INACTIVE.getCode()); + wrapper.in("device_id", ids); + wrapper.eq("assigner_id", currentUserId); + List deviceAssignments = deviceAssignmentsMapper.selectList(wrapper); + // Step 2: 使用 Java Stream 过滤出 customer_id 不为 null 的设备 + Set nonNullCustomerIds = deviceAssignments.stream().filter(device -> !StringUtils.isNotEmpty(device.getAssigneeName())).map(DeviceAssignments::getId).collect(Collectors.toSet()); + if (CollectionUtil.isEmpty(nonNullCustomerIds)) { + throw new BadRequestException("已分配的设备不允许删除!!!"); + } + + // QueryWrapper de = new QueryWrapper<>(); + // wrapper.eq("active", DeviceActiveStatusEnum.INACTIVE.getCode()); + // wrapper.in("device_id", ids); + // wrapper.eq("assignee_id", currentUserId); + // deviceAssignmentsMapper.delete(de); + + deviceAssignmentsMapper.deleteBatchIds(nonNullCustomerIds); + } + + + /** + * 删除设备分配记录(分配记录id) * * @param ids */ @Override public void deleteAssign(List ids) { - // Step 1: 查询所有传入的设备(根据 ID) List deviceAssignments = deviceAssignmentsMapper.selectBatchIds(ids); // Step 2: 使用 Java Stream 过滤出 customer_id 不为 null 的设备 - Set nonNullCustomerIds = deviceAssignments.stream().filter(device -> device.getActive() == 1).map(DeviceAssignments::getId).collect(Collectors.toSet()); - // Step 3: 从原始 ids 中“去掉”这些非空 customer_id 的设备 ID - List remainingIds = ids.stream().filter(id -> !nonNullCustomerIds.contains(id)).collect(Collectors.toList()); - if (CollectionUtil.isEmpty(remainingIds)) { + Set nonNullCustomerIds = deviceAssignments.stream() + .filter(device -> !StringUtils.isNotEmpty(device.getAssigneeName())) + .map(DeviceAssignments::getId).collect(Collectors.toSet()); + if (CollectionUtil.isEmpty(nonNullCustomerIds)) { throw new BadRequestException("已分配的设备不允许删除!!!"); } + deviceAssignmentsMapper.deleteBatchIds(ids); } diff --git a/fys-system/src/main/resources/mapper/system/DeviceMapper.xml b/fys-system/src/main/resources/mapper/system/DeviceMapper.xml index 23d4261..a86e78b 100644 --- a/fys-system/src/main/resources/mapper/system/DeviceMapper.xml +++ b/fys-system/src/main/resources/mapper/system/DeviceMapper.xml @@ -43,7 +43,7 @@ d.device_pic, d.device_mac, d.device_sn, d.update_by,d.device_imei, d.update_time, d.device_type, d.remark, d.binding_status,t.type_name, da.assignee_id AS customerId, da.assignee_name AS customerName, da.active AS deviceStatus, - da.assigned_at AS create_time , da.assigner_name AS create_by , da.id AS assignId + da.assigned_at AS create_time , da.assigner_name AS create_by , da.id AS assignId from device d LEFT JOIN device_type t ON d.device_type = t.id LEFT JOIN device_assignments da ON da.device_id = d.id @@ -85,12 +85,11 @@ - - order by d.id desc + ORDER BY create_time DESC - SELECT dt.* - FROM device_type dt + SELECT DISTINCT dt.* + FROM device_type dt JOIN device_type_grants dg ON dt.id = dg.device_type_id