From 933e74235ff2c731075cbbff2704e2c5bfe8535f Mon Sep 17 00:00:00 2001 From: daiyongfei <974332738@qq.com> Date: Mon, 30 Jun 2025 18:03:43 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E7=B1=BB=E5=9E=8B=E7=AE=A1?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../encrypt/utils/EncryptUtilsTest.java | 4 +- .../controller/DeviceTypeController.java | 84 ++++++++++ .../domain/query/DeviceTypeQueryCriteria.java | 36 ++++ .../fuyuanshen/equipment/enums/UserType.java | 48 ------ .../equipment/mapper/DeviceTypeMapper.java | 39 +++++ .../equipment/service/DeviceTypeService.java | 64 +++++++ .../service/impl/DeviceTypeServiceImpl.java | 157 ++++++++++++++++++ .../mapper/equipment/DeviceTypeMapper.xml | 62 +++++++ 8 files changed, 444 insertions(+), 50 deletions(-) create mode 100644 fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/controller/DeviceTypeController.java create mode 100644 fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/query/DeviceTypeQueryCriteria.java delete mode 100644 fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/enums/UserType.java create mode 100644 fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/mapper/DeviceTypeMapper.java create mode 100644 fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/service/DeviceTypeService.java create mode 100644 fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/service/impl/DeviceTypeServiceImpl.java create mode 100644 fys-modules/fys-equipment/src/main/resources/mapper/equipment/DeviceTypeMapper.xml diff --git a/fys-common/fys-common-encrypt/src/main/java/com/fuyuanshen/common/encrypt/utils/EncryptUtilsTest.java b/fys-common/fys-common-encrypt/src/main/java/com/fuyuanshen/common/encrypt/utils/EncryptUtilsTest.java index 2fc642e..833dd6f 100644 --- a/fys-common/fys-common-encrypt/src/main/java/com/fuyuanshen/common/encrypt/utils/EncryptUtilsTest.java +++ b/fys-common/fys-common-encrypt/src/main/java/com/fuyuanshen/common/encrypt/utils/EncryptUtilsTest.java @@ -40,8 +40,8 @@ public class EncryptUtilsTest { loginBody.setClientId("e5cd7e4891bf95d1d19206ce24a7b32e"); loginBody.setGrantType("password"); loginBody.setTenantId("894078"); - loginBody.setCode("9"); - loginBody.setUuid("54b415e4c4574e029aa522b5070538b0"); + loginBody.setCode("2"); + loginBody.setUuid("3ccffe0db9a7458cb732f95736019c6f"); // loginBody.setUsername("admin"); // loginBody.setPassword("admin123"); loginBody.setUsername("dyf"); diff --git a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/controller/DeviceTypeController.java b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/controller/DeviceTypeController.java new file mode 100644 index 0000000..dccdb61 --- /dev/null +++ b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/controller/DeviceTypeController.java @@ -0,0 +1,84 @@ +package com.fuyuanshen.equipment.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.fuyuanshen.common.core.domain.PageResult; +import com.fuyuanshen.common.core.domain.ResponseVO; +import com.fuyuanshen.equipment.domain.DeviceType; +import com.fuyuanshen.equipment.domain.query.DeviceTypeQueryCriteria; +import com.fuyuanshen.equipment.service.DeviceTypeService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: + * @Author: WY + * @Date: 2025/5/13 + **/ +@Tag(name = "设备类型管理", description = "设备类型管理") +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/deviceType") +public class DeviceTypeController { + + private final DeviceTypeService deviceTypeService; + + + @GetMapping + @Operation(summary = "分页查询设备类型") + public ResponseVO> queryDeviceType(DeviceTypeQueryCriteria criteria) { + Page page = new Page<>(criteria.getPage(), criteria.getSize()); + return ResponseVO.success(deviceTypeService.queryAll(criteria, page)); + } + + + @GetMapping(value = "/all") + @Operation(summary = "查询所有设备类型") + public ResponseVO queryDeviceTypes() { + List deviceTypes = deviceTypeService.queryDeviceTypes(); + return ResponseVO.success(deviceTypes); + } + + + // @Log("新增设备类型") + @Operation(summary = "新增设备类型") + @PostMapping(value = "/add") + public ResponseVO createDeviceType(@Validated @RequestBody DeviceType resources) { + deviceTypeService.create(resources); + return ResponseVO.success(null); + } + + + // @Log("修改设备类型") + @Operation(summary = "修改设备类型") + @PutMapping(value = "/update") + public ResponseVO updateDeviceType(@Validated @RequestBody DeviceType resources) { + deviceTypeService.update(resources); + return ResponseVO.success(null); + } + + + // @Log("删除设备类型") + @Operation(summary = "删除设备类型") + @DeleteMapping(value = "/delete") + public ResponseEntity deleteDeviceType(@Parameter(name = "传ID数组[]") @RequestBody List ids) { + deviceTypeService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } + + + @GetMapping(value = "/communicationMode") + @Operation(summary = "获取设备类型通讯方式") + public ResponseVO getCommunicationMode(@Parameter(name = "设备类型ID", required = true) Long id) { + return ResponseVO.success(deviceTypeService.getById(id)); + } + + +} diff --git a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/query/DeviceTypeQueryCriteria.java b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/query/DeviceTypeQueryCriteria.java new file mode 100644 index 0000000..67b6049 --- /dev/null +++ b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/query/DeviceTypeQueryCriteria.java @@ -0,0 +1,36 @@ +package com.fuyuanshen.equipment.domain.query; + +import com.fuyuanshen.common.mybatis.core.domain.BaseEntity; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serializable; +import java.util.Set; + +/** + * @Description: + * @Author: WY + * @Date: 2025/5/14 + **/ +@Data +public class DeviceTypeQueryCriteria extends BaseEntity implements Serializable { + + @Schema(name = "型号名称") + private String typeName; + + @Schema(name = "所属客户") + private Set customerIds; + + @Schema(name = "所属客户") + private Long customerId; + + @Schema(name = "com.fuyuanshen") + private Long tenantId; + + @Schema(name = "页码", example = "1") + private Integer page = 1; + + @Schema(name = "每页数据量", example = "10") + private Integer size = 10; + +} diff --git a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/enums/UserType.java b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/enums/UserType.java deleted file mode 100644 index 945e06e..0000000 --- a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/enums/UserType.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.fuyuanshen.equipment.enums; - -import com.fasterxml.jackson.annotation.JsonValue; - -/** - * 用户类型枚举 - * - * @author: 默苍璃 - * @date: 2025-06-1811:14 - */ -public enum UserType { - - APP(0, "APP"), MINI_PROGRAM(1, "小程序"); - - private final int value; - private final String description; - - UserType(int value, String description) { - this.value = value; - this.description = description; - } - - @JsonValue - public int getValue() { - return value; - } - - public String getDescription() { - return description; - } - - /** - * 根据值获取对应的枚举 - * - * @param value 枚举值 - * @return 对应的枚举对象 - */ - public static UserType fromValue(int value) { - for (UserType userType : values()) { - if (userType.getValue() == value) { - return userType; - } - } - throw new IllegalArgumentException("Invalid user type value: " + value); - } - -} - diff --git a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/mapper/DeviceTypeMapper.java b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/mapper/DeviceTypeMapper.java new file mode 100644 index 0000000..7efd78d --- /dev/null +++ b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/mapper/DeviceTypeMapper.java @@ -0,0 +1,39 @@ +package com.fuyuanshen.equipment.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.fuyuanshen.equipment.domain.DeviceType; +import com.fuyuanshen.equipment.domain.query.DeviceTypeQueryCriteria; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: + * @Author: WY + * @Date: 2025/5/14 + **/ +@Mapper +public interface DeviceTypeMapper extends BaseMapper { + + /** + * 分页查询设备类型 + * + * @param criteria + * @param page + * @return + */ + IPage findAll(@Param("criteria") DeviceTypeQueryCriteria criteria, Page page); + + + /** + * 查询所有设备类型 + * + * @param criteria + * @return + */ + List findAll(@Param("criteria") DeviceTypeQueryCriteria criteria); + +} diff --git a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/service/DeviceTypeService.java b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/service/DeviceTypeService.java new file mode 100644 index 0000000..8bde705 --- /dev/null +++ b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/service/DeviceTypeService.java @@ -0,0 +1,64 @@ +package com.fuyuanshen.equipment.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.fuyuanshen.common.core.domain.PageResult; +import com.fuyuanshen.equipment.domain.DeviceType; +import com.fuyuanshen.equipment.domain.query.DeviceTypeQueryCriteria; + +import java.util.List; + +/** + * @Description: + * @Author: WY + * @Date: 2025/5/14 + **/ +public interface DeviceTypeService extends IService { + + /** + * 查询数据分页 + * + * @param criteria 条件 + * @param page 分页参数 + * @return PageResult + */ + PageResult queryAll(DeviceTypeQueryCriteria criteria, Page page); + + /** + * 查询所有数据不分页 + * + * @param criteria 条件参数 + * @return List + */ + List queryAll(DeviceTypeQueryCriteria criteria); + + + /** + * 查询所有设备类型 + * + * @return + */ + List queryDeviceTypes(); + + /** + * 新增设备类型 + * + * @param resources / + */ + void create(DeviceType resources); + + /** + * 编辑 + * + * @param resources / + */ + void update(DeviceType resources); + + /** + * 多选删除 + * + * @param ids / + */ + void deleteAll(List ids); + +} diff --git a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/service/impl/DeviceTypeServiceImpl.java b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/service/impl/DeviceTypeServiceImpl.java new file mode 100644 index 0000000..a5d132f --- /dev/null +++ b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/service/impl/DeviceTypeServiceImpl.java @@ -0,0 +1,157 @@ +package com.fuyuanshen.equipment.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.fuyuanshen.common.core.domain.PageResult; +import com.fuyuanshen.common.core.utils.PageUtil; +import com.fuyuanshen.equipment.domain.DeviceType; +import com.fuyuanshen.equipment.domain.query.DeviceTypeQueryCriteria; +import com.fuyuanshen.equipment.mapper.DeviceMapper; +import com.fuyuanshen.equipment.mapper.DeviceTypeMapper; +import com.fuyuanshen.equipment.service.DeviceTypeService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * @Description: + * @Author: WY + * @Date: 2025/5/14 + **/ +@Service +@RequiredArgsConstructor +public class DeviceTypeServiceImpl extends ServiceImpl implements DeviceTypeService { + + private final DeviceTypeMapper deviceTypeMapper; + private final DeviceMapper deviceMapper; + + + /** + * 分页查询设备类型 + * + * @param criteria 条件 + * @param page 分页参数 + * @return + */ + @Override + public PageResult queryAll(DeviceTypeQueryCriteria criteria, Page page) { + + return PageUtil.toPage(deviceTypeMapper.findAll(criteria, page)); + } + + + /** + * 查询所有设备类型 + * + * @return + */ + @Override + public List queryDeviceTypes() { + // // JwtUserDto userCache = userCacheManager.getUserCache(SecurityUtils.getCurrentUsername()); + // User currentUser = userMapper.findByUsername(SecurityUtils.getCurrentUsername()); + // DeviceTypeQueryCriteria criteria = new DeviceTypeQueryCriteria(); + // // 非超级管理员增加数据隔离(根据租户隔离) + // // if (userCache.getUser().getTenantId() != null && !userCache.getUser().getTenantId().equals(UserConstants.SUPER_ADMIN_ID)) { + // // List users = userMapper.findByTenantId(userCache.getUser().getTenantId()); + // // Set userIds = users.stream().map(User::getId).collect(Collectors.toSet()); + // // criteria.setCustomerIds(userIds); + // // } + // + // // 非超级管理员增加数据隔离(只能看到自己创建的设备类型) + // if (currentUser.getTenantId() != null && !currentUser.getTenantId().equals(UserConstants.SUPER_ADMIN_ID)) { + // // + // QueryWrapper wrapper = new QueryWrapper<>(); + // wrapper.eq("username", SecurityUtils.getCurrentUsername()); + // User user = userMapper.selectOne(wrapper); + // criteria.setCustomerId(user.getId()); + // } + // + // return deviceTypeMapper.findAll(criteria); + return null; + } + + + @Override + public List queryAll(DeviceTypeQueryCriteria criteria) { + return deviceTypeMapper.findAll(criteria); + } + + + /** + * 新增设备类型 + * + * @param resources / + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void create(DeviceType resources) { + // Long deviceTypeId = NanoId.generate(NanoIdLengthEnum.HIGH_CONCURRENCY.getLength()); + // resources.setId(deviceTypeId); + // resources.setCustomerId(SecurityUtils.getCurrentUserId()); + // resources.setOwnerCustomerId(SecurityUtils.getCurrentUserId()); + // deviceTypeMapper.insert(resources); + // + // // 自动授权给自己 + // DeviceTypeGrants deviceTypeGrants = new DeviceTypeGrants(); + // deviceTypeGrants.setDeviceTypeId(deviceTypeId); + // deviceTypeGrants.setCustomerId(SecurityUtils.getCurrentUserId()); + // deviceTypeGrants.setGrantorCustomerId(SecurityUtils.getCurrentUserId()); + // deviceTypeGrants.setGrantedAt(new Date()); + // deviceTypeGrantsMapper.insert(deviceTypeGrants); + } + + + /** + * 修改设备类型 + * + * @param resources / + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void update(DeviceType resources) { + // + // List deviceList = deviceMapper.selectList(new QueryWrapper().eq("device_type", resources.getId())); + // if (CollectionUtil.isNotEmpty(deviceList)) { + // throw new BadRequestException("该设备类型下已有设备,请先解绑设备!!!"); + // } + // + // DeviceType deviceType = getById(resources.getId()); + // deviceType.copy(resources); + // Timestamp timestamp = new Timestamp(System.currentTimeMillis()); + // deviceType.setUpdateTime(timestamp); + // deviceTypeMapper.updateById(deviceType); + } + + + /** + * 删除设备类型 + * + * @param ids / + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteAll(List ids) { + // // 查询所有与 device 关联的 deviceType IDs + // List deviceList = deviceMapper.selectList(new QueryWrapper().in("device_type", ids)); + // // 提取与 device 关联的 deviceType IDs + // List filteredIds = deviceList.stream() + // .map(Device::getDeviceType) + // .distinct() + // .collect(Collectors.toList()); + // // 从原始 ids 中移除已关联 device 的 id(即过滤掉能查到结果的 id) + // List idsToBeDeleted = ids.stream() + // .filter(id -> !filteredIds.contains(id)) + // .collect(Collectors.toList()); + // if (idsToBeDeleted.isEmpty()) { + // throw new BadRequestException("选中设备类型已绑定设备,请先解绑设备!!!"); + // } + // // 删除过滤后的 id 列表 + // deviceTypeMapper.deleteBatchIds(idsToBeDeleted); + // deviceTypeGrantsMapper.delete(new QueryWrapper().in("device_type_id", idsToBeDeleted)); + + } + + +} diff --git a/fys-modules/fys-equipment/src/main/resources/mapper/equipment/DeviceTypeMapper.xml b/fys-modules/fys-equipment/src/main/resources/mapper/equipment/DeviceTypeMapper.xml new file mode 100644 index 0000000..388b193 --- /dev/null +++ b/fys-modules/fys-equipment/src/main/resources/mapper/equipment/DeviceTypeMapper.xml @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + id + , type_name, is_support_ble, locate_mode, network_way, create_by, update_by, create_time, update_time,communication_mode + + + + + + + + + \ No newline at end of file