From e4df695f5eca64d40bdbfcd0003e86a980390e80 Mon Sep 17 00:00:00 2001 From: daiyongfei <974332738@qq.com> Date: Tue, 26 Aug 2025 09:26:33 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E7=BB=91=E5=AE=9A=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E5=88=86=E7=BB=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../device/DeviceGroupController.java | 17 +++++++++++++++++ .../equipment/service/IDeviceGroupService.java | 11 +++++++++++ .../service/impl/DeviceGroupServiceImpl.java | 18 +++++++++++++++++- 3 files changed, 45 insertions(+), 1 deletion(-) diff --git a/fys-admin/src/main/java/com/fuyuanshen/web/controller/device/DeviceGroupController.java b/fys-admin/src/main/java/com/fuyuanshen/web/controller/device/DeviceGroupController.java index 28601a1a..3e1018e9 100644 --- a/fys-admin/src/main/java/com/fuyuanshen/web/controller/device/DeviceGroupController.java +++ b/fys-admin/src/main/java/com/fuyuanshen/web/controller/device/DeviceGroupController.java @@ -114,4 +114,21 @@ public class DeviceGroupController extends BaseController { return toAjax(deviceGroupService.deleteWithValidByIds(List.of(ids), true)); } + + /** + * 绑定设备分组 + * + * @param groupId 分组id + * @param deviceId 设备id + */ + @Operation(summary = "绑定设备分组") + // @SaCheckPermission("fys-equipment:group:remove") + @Log(title = "绑定设备分组", businessType = BusinessType.DELETE) + @GetMapping("/groupId/{deviceId}") + public R bindingDevice(@NotEmpty(message = "分组id 不能为空") @PathVariable Long groupId, + @NotEmpty(message = "设备id 不能为空") @PathVariable Long[] deviceId) { + return toAjax(deviceGroupService.bindingDevice(groupId, deviceId)); + } + + } diff --git a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/service/IDeviceGroupService.java b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/service/IDeviceGroupService.java index 9662fef4..3be6a880 100644 --- a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/service/IDeviceGroupService.java +++ b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/service/IDeviceGroupService.java @@ -3,6 +3,7 @@ package com.fuyuanshen.equipment.service; import com.fuyuanshen.common.mybatis.core.page.TableDataInfo; import com.fuyuanshen.equipment.domain.vo.DeviceGroupVo; import com.fuyuanshen.equipment.domain.bo.DeviceGroupBo; +import jakarta.validation.constraints.NotEmpty; import java.util.Collection; import java.util.List; @@ -56,4 +57,14 @@ public interface IDeviceGroupService { * @return 是否删除成功 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + + /** + * 绑定设备分组 + * + * @param groupId 分组id + * @param deviceId 设备id + * @return 是否绑定成功 + */ + Boolean bindingDevice(@NotEmpty(message = "分组id 不能为空") Long groupId, @NotEmpty(message = "设备id 不能为空") Long[] deviceId); } diff --git a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/service/impl/DeviceGroupServiceImpl.java b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/service/impl/DeviceGroupServiceImpl.java index 51cf369b..2981a65f 100644 --- a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/service/impl/DeviceGroupServiceImpl.java +++ b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/service/impl/DeviceGroupServiceImpl.java @@ -11,6 +11,7 @@ import com.fuyuanshen.common.mybatis.core.page.TableDataInfo; import com.fuyuanshen.common.satoken.utils.LoginHelper; import com.fuyuanshen.equipment.domain.Device; import com.fuyuanshen.equipment.domain.DeviceTypeGrants; +import jakarta.validation.constraints.NotEmpty; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -63,7 +64,7 @@ public class DeviceGroupServiceImpl implements IDeviceGroupService { public List queryList(DeviceGroupBo bo) { Page page = new Page<>(bo.getPageNum(), bo.getPageSize()); // 1. 查询顶级分组(parent_id为null) - IPage rootGroups = baseMapper.selectRootGroups(bo, page); + IPage rootGroups = baseMapper.selectRootGroups(bo, page); List records = rootGroups.getRecords(); // 2. 递归构建树形结构 @@ -169,4 +170,19 @@ public class DeviceGroupServiceImpl implements IDeviceGroupService { } return baseMapper.deleteByIds(ids) > 0; } + + /** + * 绑定设备分组 + * + * @param groupId 分组id + * @param deviceId 设备id + * @return 是否绑定成功 + */ + @Override + public Boolean bindingDevice(Long groupId, Long[] deviceId) { + + + + return true; + } } From f9d9dadf08755500e29685b6de1e5d69bf85dadb Mon Sep 17 00:00:00 2001 From: daiyongfei <974332738@qq.com> Date: Tue, 26 Aug 2025 10:00:35 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E7=BB=91=E5=AE=9A=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E5=88=86=E7=BB=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/DeviceGroupServiceImpl.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/service/impl/DeviceGroupServiceImpl.java b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/service/impl/DeviceGroupServiceImpl.java index 2981a65f..2d79529b 100644 --- a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/service/impl/DeviceGroupServiceImpl.java +++ b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/service/impl/DeviceGroupServiceImpl.java @@ -1,6 +1,7 @@ package com.fuyuanshen.equipment.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.fuyuanshen.common.core.domain.R; @@ -11,6 +12,7 @@ import com.fuyuanshen.common.mybatis.core.page.TableDataInfo; import com.fuyuanshen.common.satoken.utils.LoginHelper; import com.fuyuanshen.equipment.domain.Device; import com.fuyuanshen.equipment.domain.DeviceTypeGrants; +import com.fuyuanshen.equipment.mapper.DeviceMapper; import jakarta.validation.constraints.NotEmpty; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -23,6 +25,7 @@ import com.fuyuanshen.equipment.mapper.DeviceGroupMapper; import com.fuyuanshen.equipment.service.IDeviceGroupService; import java.text.SimpleDateFormat; +import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.Collection; @@ -40,6 +43,7 @@ import java.util.stream.Collectors; public class DeviceGroupServiceImpl implements IDeviceGroupService { private final DeviceGroupMapper baseMapper; + private final DeviceMapper deviceMapper; /** @@ -181,7 +185,15 @@ public class DeviceGroupServiceImpl implements IDeviceGroupService { @Override public Boolean bindingDevice(Long groupId, Long[] deviceId) { + if (deviceId != null && deviceId.length > 0) { + // 创建更新条件 + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("id", Arrays.asList(deviceId)); + updateWrapper.set("group_id", groupId); + // 执行批量更新 + deviceMapper.update(updateWrapper); + } return true; } From 364574eeae92ff4861972b4492cc89f5bebb62ca Mon Sep 17 00:00:00 2001 From: chenyouting <514333061@qq.com> Date: Wed, 27 Aug 2025 08:59:29 +0800 Subject: [PATCH 3/4] =?UTF-8?q?web=E7=AB=AF=E6=8E=A7=E5=88=B6=E4=B8=AD?= =?UTF-8?q?=E5=BF=833?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rule/bjq/BjqLaserModeSettingsRule.java | 15 ++--- .../device/DeviceControlCenterController.java | 16 ++++-- .../service/device/DeviceBJQBizService.java | 16 ++++++ .../web/service/device/DeviceBizService.java | 10 +++- .../mapper/app/AppDeviceShareMapper.xml | 4 +- .../fuyuanshen/equipment/domain/Device.java | 5 +- .../domain/dto/InstructionRecordDto.java | 32 +++++++++++ .../domain/query/DeviceQueryCriteria.java | 55 +++++++++++++------ .../domain/vo/InstructionRecordVo.java | 32 +++++++++++ .../equipment/mapper/DeviceLogMapper.java | 5 ++ .../equipment/mapper/DeviceMapper.java | 2 +- .../mapper/equipment/DeviceLogMapper.xml | 33 +++++++++++ .../mapper/equipment/DeviceMapper.xml | 15 +++-- 13 files changed, 196 insertions(+), 44 deletions(-) create mode 100644 fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/dto/InstructionRecordDto.java create mode 100644 fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/vo/InstructionRecordVo.java diff --git a/fys-admin/src/main/java/com/fuyuanshen/global/mqtt/rule/bjq/BjqLaserModeSettingsRule.java b/fys-admin/src/main/java/com/fuyuanshen/global/mqtt/rule/bjq/BjqLaserModeSettingsRule.java index b2bb3391..35b1ac3e 100644 --- a/fys-admin/src/main/java/com/fuyuanshen/global/mqtt/rule/bjq/BjqLaserModeSettingsRule.java +++ b/fys-admin/src/main/java/com/fuyuanshen/global/mqtt/rule/bjq/BjqLaserModeSettingsRule.java @@ -15,8 +15,7 @@ import org.springframework.stereotype.Component; import java.time.Duration; import static com.fuyuanshen.common.core.constant.GlobalConstants.FUNCTION_ACCESS_KEY; -import static com.fuyuanshen.global.mqtt.constants.DeviceRedisKeyConstants.DEVICE_KEY_PREFIX; -import static com.fuyuanshen.global.mqtt.constants.DeviceRedisKeyConstants.DEVICE_LIGHT_MODE_KEY_PREFIX; +import static com.fuyuanshen.global.mqtt.constants.DeviceRedisKeyConstants.*; /** * 灯光模式订阅设备回传消息 @@ -37,14 +36,10 @@ public class BjqLaserModeSettingsRule implements MqttMessageRule { try { Object[] convertArr = context.getConvertArr(); - String mainLightMode = convertArr[1].toString(); - if(StringUtils.isNotBlank(mainLightMode)){ - if("0".equals(mainLightMode)){ - String deviceOnlineStatusRedisKey = GlobalConstants.GLOBAL_REDIS_KEY+ DEVICE_KEY_PREFIX+ context.getDeviceImei() + DeviceRedisKeyConstants.DEVICE_ONLINE_STATUS_KEY_PREFIX ; - RedisUtils.setCacheObject(deviceOnlineStatusRedisKey, "0", Duration.ofSeconds(60*15)); - } + String mode = convertArr[1].toString(); + if(StringUtils.isNotBlank(mode)){ // 发送设备状态和位置信息到Redis - syncSendDeviceDataToRedisWithFuture(context.getDeviceImei(),mainLightMode); + syncSendDeviceDataToRedisWithFuture(context.getDeviceImei(),mode); } RedisUtils.setCacheObject(functionAccess, FunctionAccessStatus.OK.getCode(), Duration.ofSeconds(30)); @@ -65,7 +60,7 @@ public class BjqLaserModeSettingsRule implements MqttMessageRule { // }); try { // 将设备状态信息存储到Redis中 - String deviceRedisKey = GlobalConstants.GLOBAL_REDIS_KEY+DeviceRedisKeyConstants.DEVICE_KEY_PREFIX + deviceImei + DEVICE_LIGHT_MODE_KEY_PREFIX; + String deviceRedisKey = GlobalConstants.GLOBAL_REDIS_KEY+DeviceRedisKeyConstants.DEVICE_KEY_PREFIX + deviceImei + DEVICE_LASER_MODE_KEY_PREFIX; // 存储到Redis RedisUtils.setCacheObject(deviceRedisKey, convertValue.toString()); diff --git a/fys-admin/src/main/java/com/fuyuanshen/web/controller/device/DeviceControlCenterController.java b/fys-admin/src/main/java/com/fuyuanshen/web/controller/device/DeviceControlCenterController.java index 76e39357..789ca852 100644 --- a/fys-admin/src/main/java/com/fuyuanshen/web/controller/device/DeviceControlCenterController.java +++ b/fys-admin/src/main/java/com/fuyuanshen/web/controller/device/DeviceControlCenterController.java @@ -8,19 +8,17 @@ import com.fuyuanshen.common.mybatis.core.page.PageQuery; import com.fuyuanshen.common.mybatis.core.page.TableDataInfo; import com.fuyuanshen.common.web.core.BaseController; import com.fuyuanshen.equipment.domain.dto.AppDeviceBo; +import com.fuyuanshen.equipment.domain.dto.InstructionRecordDto; import com.fuyuanshen.equipment.domain.query.DeviceQueryCriteria; import com.fuyuanshen.equipment.domain.vo.AppDeviceVo; +import com.fuyuanshen.equipment.domain.vo.InstructionRecordVo; import com.fuyuanshen.equipment.domain.vo.WebDeviceVo; import com.fuyuanshen.web.service.device.DeviceBizService; -import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.http.ResponseEntity; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -import java.util.Date; -import java.util.HashMap; import java.util.List; import java.util.Map; @@ -30,7 +28,7 @@ import java.util.Map; @Slf4j @RestController @RequiredArgsConstructor -@RequestMapping("/api/device/controlCenter") +@RequestMapping("/api/device") public class DeviceControlCenterController extends BaseController { private final DeviceBizService appDeviceService; @@ -95,4 +93,12 @@ public class DeviceControlCenterController extends BaseController { return R.ok(appDeviceService.getDeviceInfo(deviceMac)); } + /** + * 指令下发记录 + */ + @GetMapping("/instructionRecord") + public TableDataInfo getInstructionRecord(InstructionRecordDto dto, PageQuery pageQuery) { + return appDeviceService.getInstructionRecord(dto,pageQuery); + } + } diff --git a/fys-admin/src/main/java/com/fuyuanshen/web/service/device/DeviceBJQBizService.java b/fys-admin/src/main/java/com/fuyuanshen/web/service/device/DeviceBJQBizService.java index 9ee8236e..17c8d8ae 100644 --- a/fys-admin/src/main/java/com/fuyuanshen/web/service/device/DeviceBJQBizService.java +++ b/fys-admin/src/main/java/com/fuyuanshen/web/service/device/DeviceBJQBizService.java @@ -190,6 +190,22 @@ public class DeviceBJQBizService { vo.setBatteryPercentage("0"); } + String lightModeStatus = RedisUtils.getCacheObject(GLOBAL_REDIS_KEY+ DEVICE_KEY_PREFIX + device.getDeviceImei() + DeviceRedisKeyConstants.DEVICE_LIGHT_MODE_KEY_PREFIX); + // 获取电量 + if(StringUtils.isNotBlank(deviceStatus)){ + vo.setMainLightMode(lightModeStatus); + } + + String lightBrightnessStatus = RedisUtils.getCacheObject(GLOBAL_REDIS_KEY+ DEVICE_KEY_PREFIX + device.getDeviceImei() + DeviceRedisKeyConstants.DEVICE_LIGHT_BRIGHTNESS_KEY_PREFIX); + if(StringUtils.isNotBlank(lightBrightnessStatus)){ + vo.setLightBrightness(lightBrightnessStatus); + } + + String laserLightMode = RedisUtils.getCacheObject(GLOBAL_REDIS_KEY+ DEVICE_KEY_PREFIX + device.getDeviceImei() + DeviceRedisKeyConstants.DEVICE_LASER_MODE_KEY_PREFIX); + if(StringUtils.isNotBlank(laserLightMode)){ + vo.setLaserLightMode(laserLightMode); + } + // 获取经度纬度 String locationKey = GlobalConstants.GLOBAL_REDIS_KEY+ DEVICE_KEY_PREFIX + device.getDeviceImei() + DeviceRedisKeyConstants.DEVICE_LOCATION_KEY_PREFIX; String locationInfo = RedisUtils.getCacheObject(locationKey); diff --git a/fys-admin/src/main/java/com/fuyuanshen/web/service/device/DeviceBizService.java b/fys-admin/src/main/java/com/fuyuanshen/web/service/device/DeviceBizService.java index 90114467..4e468f30 100644 --- a/fys-admin/src/main/java/com/fuyuanshen/web/service/device/DeviceBizService.java +++ b/fys-admin/src/main/java/com/fuyuanshen/web/service/device/DeviceBizService.java @@ -14,7 +14,6 @@ import com.fuyuanshen.app.domain.vo.APPDeviceTypeVo; import com.fuyuanshen.app.domain.vo.AppUserVo; import com.fuyuanshen.app.mapper.AppDeviceBindRecordMapper; import com.fuyuanshen.app.mapper.AppDeviceShareMapper; -import com.fuyuanshen.app.mapper.AppPersonnelInfoMapper; import com.fuyuanshen.app.mapper.AppUserMapper; import com.fuyuanshen.app.mapper.equipment.APPDeviceMapper; import com.fuyuanshen.common.core.exception.ServiceException; @@ -26,15 +25,15 @@ import com.fuyuanshen.common.redis.utils.RedisUtils; import com.fuyuanshen.common.satoken.utils.AppLoginHelper; import com.fuyuanshen.equipment.domain.Device; import com.fuyuanshen.equipment.domain.dto.AppDeviceBo; +import com.fuyuanshen.equipment.domain.dto.InstructionRecordDto; import com.fuyuanshen.equipment.domain.query.DeviceQueryCriteria; import com.fuyuanshen.equipment.domain.vo.AppDeviceVo; +import com.fuyuanshen.equipment.domain.vo.InstructionRecordVo; import com.fuyuanshen.equipment.domain.vo.WebDeviceVo; import com.fuyuanshen.equipment.enums.BindingStatusEnum; import com.fuyuanshen.equipment.enums.CommunicationModeEnum; import com.fuyuanshen.equipment.mapper.DeviceLogMapper; import com.fuyuanshen.equipment.mapper.DeviceMapper; -import com.fuyuanshen.equipment.mapper.DeviceTypeMapper; -import com.fuyuanshen.global.mqtt.config.MqttGateway; import com.fuyuanshen.global.mqtt.constants.DeviceRedisKeyConstants; import com.fuyuanshen.web.service.device.status.base.DeviceStatusRule; import com.fuyuanshen.web.service.device.status.base.RealTimeStatusEngine; @@ -332,4 +331,9 @@ public class DeviceBizService { // List devices = deviceMapper.selectList(queryWrapper); return deviceMapper.getDeviceInfo(deviceMac); } + + public TableDataInfo getInstructionRecord(InstructionRecordDto bo, PageQuery pageQuery) { + Page result = deviceLogMapper.getInstructionRecord(pageQuery.build(), bo); + return TableDataInfo.build(result); + } } diff --git a/fys-modules/fys-app/src/main/resources/mapper/app/AppDeviceShareMapper.xml b/fys-modules/fys-app/src/main/resources/mapper/app/AppDeviceShareMapper.xml index 39033bc1..137f67ff 100644 --- a/fys-modules/fys-app/src/main/resources/mapper/app/AppDeviceShareMapper.xml +++ b/fys-modules/fys-app/src/main/resources/mapper/app/AppDeviceShareMapper.xml @@ -12,7 +12,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" d.device_pic, dt.type_name, dt.communication_mode, - dt.model_dictionary detailPageUrl, + dt.app_model_dictionary detailPageUrl, d.bluetooth_name, c.binding_time, ad.*,u.user_name otherPhonenumber @@ -33,7 +33,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" dt.type_name, dt.communication_mode, d.bluetooth_name, - dt.model_dictionary detailPageUrl, + dt.app_model_dictionary detailPageUrl, c.binding_time, ad.*,u.user_name otherPhonenumber from diff --git a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/Device.java b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/Device.java index d166aacb..5c90dc82 100644 --- a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/Device.java +++ b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/Device.java @@ -153,5 +153,8 @@ public class Device extends TenantEntity { */ @Schema(title = "出厂日期") private Date productionDate; - + /** + * 在线状态(0离线,1在线) + */ + private Integer onlineStatus; } diff --git a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/dto/InstructionRecordDto.java b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/dto/InstructionRecordDto.java new file mode 100644 index 00000000..240fc482 --- /dev/null +++ b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/dto/InstructionRecordDto.java @@ -0,0 +1,32 @@ +package com.fuyuanshen.equipment.domain.dto; + +import lombok.Data; + +@Data +public class InstructionRecordDto { + /** + * 设备类型 + */ + private String deviceType; + /** + * 设备名称 + */ + private String deviceName; + /** + * 设备MAC + */ + private String deviceMac; + /** + * 设备IMEI + */ + private String deviceImei; + /** + * 操作时间-开始时间 + */ + private String startTime; + + /** + * 操作时间-结束时间 + */ + private String endTime; +} diff --git a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/query/DeviceQueryCriteria.java b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/query/DeviceQueryCriteria.java index c9dcca99..b9643d6c 100644 --- a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/query/DeviceQueryCriteria.java +++ b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/query/DeviceQueryCriteria.java @@ -18,22 +18,34 @@ import java.util.Set; @Data public class DeviceQueryCriteria extends BaseEntity { - @Schema(name = "设备id") + /** + * 设备id + */ private Long deviceId; - @Schema(name = "设备名称") + /** + * 设备名称 + */ private String deviceName; - @Schema(name = "设备类型") + /** + * 设备类型 + */ private Long deviceType; - @Schema(name = "设备MAC") + /** + * 设备MAC + */ private String deviceMac; - @Schema(name = "设备IMEI") + /** + * 设备IMEI + */ private String deviceImei; - @Schema(name = "设备SN") + /** + * 设备SN + */ private String deviceSn; /** @@ -41,26 +53,37 @@ public class DeviceQueryCriteria extends BaseEntity { * 0 失效 * 1 正常 */ - @Schema(name = "设备状态 0 失效 1 正常 ") private Integer deviceStatus; - @Schema(name = "页码", example = "1") + /** + * 页码 + */ private Integer pageNum = 1; - @Schema(name = "每页数据量", example = "10") + /** + * 每页数据量 + */ private Integer pageSize = 10; - @Schema(name = "客户id") + /** + * 客户id + */ private Long customerId; private Set customerIds; - @Schema(name = "当前所有者") + /** + * 当前所有者 + */ private Long currentOwnerId; - @Schema(name = "租户ID") + /** + * 租户ID + */ private String tenantId; - @Schema(name = "通讯方式", example = "0:4G;1:蓝牙") + /** + * 通讯方式 0:4G;1:蓝牙 + */ private Integer communicationMode; /* app绑定用户id */ @@ -72,22 +95,22 @@ public class DeviceQueryCriteria extends BaseEntity { */ private String personnelBy; + /** * 是否为管理员 */ - @Schema(name = "是否为管理员") private Boolean isAdmin = false; + /** * 设备所属分组 */ - @Schema(name = "设备所属分组") private Long groupId; + /** * 设备地区 */ - @Schema(name = "设备地区") private String area; } diff --git a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/vo/InstructionRecordVo.java b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/vo/InstructionRecordVo.java new file mode 100644 index 00000000..97964ec4 --- /dev/null +++ b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/vo/InstructionRecordVo.java @@ -0,0 +1,32 @@ +package com.fuyuanshen.equipment.domain.vo; + +import lombok.Data; + +@Data +public class InstructionRecordVo { + private Long id; + /** + * 设备名称 + */ + private String deviceName; + + /** + * 设备类型 + */ + private String deviceType; + + /** + * 操作模块 + */ + private String deviceAction; + + /** + * 操作内容 + */ + private String content; + + /** + * 操作时间 + */ + private String createTime; +} diff --git a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/mapper/DeviceLogMapper.java b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/mapper/DeviceLogMapper.java index adff5de4..30b9fb82 100644 --- a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/mapper/DeviceLogMapper.java +++ b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/mapper/DeviceLogMapper.java @@ -1,8 +1,12 @@ package com.fuyuanshen.equipment.mapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.fuyuanshen.equipment.domain.DeviceLog; +import com.fuyuanshen.equipment.domain.dto.InstructionRecordDto; import com.fuyuanshen.equipment.domain.vo.DeviceLogVo; import com.fuyuanshen.common.mybatis.core.mapper.BaseMapperPlus; +import com.fuyuanshen.equipment.domain.vo.InstructionRecordVo; +import org.apache.ibatis.annotations.Param; /** * 设备日志Mapper接口 @@ -12,4 +16,5 @@ import com.fuyuanshen.common.mybatis.core.mapper.BaseMapperPlus; */ public interface DeviceLogMapper extends BaseMapperPlus { + Page getInstructionRecord(Page page,@Param("bo") InstructionRecordDto bo); } diff --git a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/mapper/DeviceMapper.java b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/mapper/DeviceMapper.java index 39896531..e75e1c26 100644 --- a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/mapper/DeviceMapper.java +++ b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/mapper/DeviceMapper.java @@ -70,5 +70,5 @@ public interface DeviceMapper extends BaseMapper { AppDeviceVo getDeviceInfo(@Param("deviceMac") String deviceMac); - Page queryWebDeviceList(Page build, DeviceQueryCriteria bo); + Page queryWebDeviceList(Page build,@Param("criteria") DeviceQueryCriteria criteria); } diff --git a/fys-modules/fys-equipment/src/main/resources/mapper/equipment/DeviceLogMapper.xml b/fys-modules/fys-equipment/src/main/resources/mapper/equipment/DeviceLogMapper.xml index d4c99d6a..d15eeb8b 100644 --- a/fys-modules/fys-equipment/src/main/resources/mapper/equipment/DeviceLogMapper.xml +++ b/fys-modules/fys-equipment/src/main/resources/mapper/equipment/DeviceLogMapper.xml @@ -4,4 +4,37 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + 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 51f0a638..7e4423cb 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 @@ -151,7 +151,7 @@ dt.type_name, dt.communication_mode, d.bluetooth_name, - dt.model_dictionary detailPageUrl, + dt.app_model_dictionary detailPageUrl, c.binding_time from device d inner join device_type dt on d.device_type = dt.id @@ -181,7 +181,7 @@ d.device_pic, dt.type_name, dt.communication_mode, - dt.model_dictionary detailPageUrl, + dt.app_model_dictionary detailPageUrl, d.bluetooth_name from device d inner join device_type dt on d.device_type = dt.id @@ -227,7 +227,7 @@ dt.type_name, dt.communication_mode, d.bluetooth_name, - dt.model_dictionary detailPageUrl + dt.app_model_dictionary detailPageUrl from device d inner join device_type dt on d.device_type = dt.id where d.device_mac = #{deviceMac} @@ -242,7 +242,7 @@ dt.type_name, dt.communication_mode, d.bluetooth_name, - dt.model_dictionary detailPageUrl, + dt.pc_model_dictionary detailPageUrl, ap.name personnelBy, d.device_status, c.binding_time @@ -254,7 +254,7 @@ and d.device_type = #{criteria.deviceType} - + and d.device_name like concat('%', #{criteria.deviceName}, '%') @@ -270,7 +270,10 @@ and ap.name like concat('%', #{criteria.personnelBy}, '%') - and dt.communication_mode, = #{criteria.communicationMode} + and dt.communication_mode = #{criteria.communicationMode} + + + and d.group_id = #{criteria.groupId} From 0bbac2b4979515e31fcef83d51360aa2cc18fbfb Mon Sep 17 00:00:00 2001 From: daiyongfei <974332738@qq.com> Date: Wed, 27 Aug 2025 09:08:27 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E8=AF=A6=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../device/WEBDeviceController.java | 27 ++++++++++--------- .../web/service/WEBDeviceService.java | 9 +++++++ .../service/impl/WEBDeviceServiceImpl.java | 20 ++++++++++++++ .../service/impl/DeviceGroupServiceImpl.java | 2 ++ 4 files changed, 46 insertions(+), 12 deletions(-) diff --git a/fys-admin/src/main/java/com/fuyuanshen/web/controller/device/WEBDeviceController.java b/fys-admin/src/main/java/com/fuyuanshen/web/controller/device/WEBDeviceController.java index 86ec7ed6..9f7ddadb 100644 --- a/fys-admin/src/main/java/com/fuyuanshen/web/controller/device/WEBDeviceController.java +++ b/fys-admin/src/main/java/com/fuyuanshen/web/controller/device/WEBDeviceController.java @@ -1,29 +1,18 @@ package com.fuyuanshen.web.controller.device; -import com.fuyuanshen.app.domain.dto.APPReNameDTO; -import com.fuyuanshen.app.domain.dto.AppRealTimeStatusDto; -import com.fuyuanshen.app.domain.vo.APPDeviceTypeVo; +import com.fuyuanshen.app.domain.AppPersonnelInfoRecords; import com.fuyuanshen.common.core.domain.R; -import com.fuyuanshen.common.mybatis.core.page.PageQuery; -import com.fuyuanshen.common.mybatis.core.page.TableDataInfo; import com.fuyuanshen.common.web.core.BaseController; -import com.fuyuanshen.equipment.domain.Device; -import com.fuyuanshen.equipment.domain.dto.AppDeviceBo; -import com.fuyuanshen.equipment.domain.query.DeviceQueryCriteria; -import com.fuyuanshen.equipment.domain.vo.AppDeviceVo; import com.fuyuanshen.equipment.domain.vo.WebDeviceVo; import com.fuyuanshen.web.service.WEBDeviceService; -import com.fuyuanshen.web.service.device.DeviceBizService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.List; -import java.util.Map; /** * @Description: @@ -68,6 +57,20 @@ public class WEBDeviceController extends BaseController { } + /** + * 设备用户详情 + * + * @param id + * @return + */ + @Operation(summary = "设备详情") + @GetMapping(value = "/getDeviceUser/{id}") + public R> getDeviceUser(@PathVariable Long id) { + List device = deviceService.getDeviceUser(id); + return R.ok(device); + } + + } diff --git a/fys-admin/src/main/java/com/fuyuanshen/web/service/WEBDeviceService.java b/fys-admin/src/main/java/com/fuyuanshen/web/service/WEBDeviceService.java index fe84f3b9..48edf4eb 100644 --- a/fys-admin/src/main/java/com/fuyuanshen/web/service/WEBDeviceService.java +++ b/fys-admin/src/main/java/com/fuyuanshen/web/service/WEBDeviceService.java @@ -2,6 +2,7 @@ package com.fuyuanshen.web.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.fuyuanshen.app.domain.AppPersonnelInfoRecords; import com.fuyuanshen.common.mybatis.core.page.PageQuery; import com.fuyuanshen.common.mybatis.core.page.TableDataInfo; import com.fuyuanshen.equipment.domain.Device; @@ -38,4 +39,12 @@ public interface WEBDeviceService extends IService { */ WebDeviceVo getDevice(Long id); + /** + * 设备用户详情 + * + * @param id + * @return + */ + List getDeviceUser(Long id); + } diff --git a/fys-admin/src/main/java/com/fuyuanshen/web/service/impl/WEBDeviceServiceImpl.java b/fys-admin/src/main/java/com/fuyuanshen/web/service/impl/WEBDeviceServiceImpl.java index 0d5097c1..d6a062f3 100644 --- a/fys-admin/src/main/java/com/fuyuanshen/web/service/impl/WEBDeviceServiceImpl.java +++ b/fys-admin/src/main/java/com/fuyuanshen/web/service/impl/WEBDeviceServiceImpl.java @@ -6,9 +6,11 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.fuyuanshen.app.domain.AppDeviceBindRecord; import com.fuyuanshen.app.domain.AppDeviceShare; +import com.fuyuanshen.app.domain.AppPersonnelInfoRecords; import com.fuyuanshen.app.domain.vo.AppDeviceShareVo; import com.fuyuanshen.app.mapper.AppDeviceBindRecordMapper; import com.fuyuanshen.app.mapper.AppDeviceShareMapper; +import com.fuyuanshen.app.mapper.AppPersonnelInfoRecordsMapper; import com.fuyuanshen.equipment.domain.Device; import com.fuyuanshen.equipment.domain.DeviceAssignments; import com.fuyuanshen.equipment.domain.vo.WebDeviceVo; @@ -22,6 +24,8 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.List; + /** * @Description: * @Author: WY @@ -35,6 +39,7 @@ public class WEBDeviceServiceImpl extends ServiceImpl impl private final DeviceAssignmentsMapper deviceAssignmentsMapper; private final AppDeviceBindRecordMapper appDeviceBindRecordMapper; + private final AppPersonnelInfoRecordsMapper infoRecordsMapper; private final DeviceMapper deviceMapper; private final AppDeviceShareMapper appDeviceShareMapper; @@ -95,4 +100,19 @@ public class WEBDeviceServiceImpl extends ServiceImpl impl } + /** + * 设备用户详情 + * + * @param id + * @return + */ + @Override + public List getDeviceUser(Long id) { + List appPersonnelInfoRecords = infoRecordsMapper.selectList( + new QueryWrapper().eq("device_id", id) + .orderByDesc("create_time")); + return appPersonnelInfoRecords; + } + + } diff --git a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/service/impl/DeviceGroupServiceImpl.java b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/service/impl/DeviceGroupServiceImpl.java index 2d79529b..ecf9a82a 100644 --- a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/service/impl/DeviceGroupServiceImpl.java +++ b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/service/impl/DeviceGroupServiceImpl.java @@ -175,6 +175,7 @@ public class DeviceGroupServiceImpl implements IDeviceGroupService { return baseMapper.deleteByIds(ids) > 0; } + /** * 绑定设备分组 * @@ -197,4 +198,5 @@ public class DeviceGroupServiceImpl implements IDeviceGroupService { return true; } + }