From 28a0efd0a2cec04dfe31b46b886a3042397422aa Mon Sep 17 00:00:00 2001 From: guochaojie Date: Thu, 4 Jul 2024 15:14:06 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A7=E5=88=B6=E7=94=B3=E8=AF=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/RecycleDeviceController.java | 56 ++++++++++++++----- .../jnpf/model/recycledevice/Command.java | 2 + .../model/recycledevice/ControlAuthVO.java | 12 ++++ .../jnpf/model/recycledevice/DeviceVO.java | 11 ++++ 4 files changed, 66 insertions(+), 15 deletions(-) create mode 100644 jnpf-java-boot/jnpf-scm/jnpf-scm-entity/src/main/java/jnpf/model/recycledevice/ControlAuthVO.java create mode 100644 jnpf-java-boot/jnpf-scm/jnpf-scm-entity/src/main/java/jnpf/model/recycledevice/DeviceVO.java diff --git a/jnpf-java-boot/jnpf-scm/jnpf-scm-controller/src/main/java/jnpf/controller/RecycleDeviceController.java b/jnpf-java-boot/jnpf-scm/jnpf-scm-controller/src/main/java/jnpf/controller/RecycleDeviceController.java index 1f0cf6d..42c12cf 100644 --- a/jnpf-java-boot/jnpf-scm/jnpf-scm-controller/src/main/java/jnpf/controller/RecycleDeviceController.java +++ b/jnpf-java-boot/jnpf-scm/jnpf-scm-controller/src/main/java/jnpf/controller/RecycleDeviceController.java @@ -1,5 +1,6 @@ package jnpf.controller; +import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -7,16 +8,11 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jnpf.base.ActionResult; import jnpf.base.UserInfo; -import jnpf.base.model.datainterface.DataInterfacePage; -import jnpf.base.model.datainterface.DataInterfaceParamModel; import jnpf.base.vo.PageListVO; import jnpf.base.vo.PaginationVO; import jnpf.entity.*; import jnpf.model.datainterface.DIDeviceListInfoModel; -import jnpf.model.recycledevice.Command; -import jnpf.model.recycledevice.RecycleDeviceConstant; -import jnpf.model.recycledevice.RecycleDeviceForm; -import jnpf.model.recycledevice.RecycleDevicePagination; +import jnpf.model.recycledevice.*; import jnpf.service.*; import jnpf.util.*; import jnpf.utils.CustomerMqttClient; @@ -32,6 +28,7 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; +import java.util.concurrent.TimeUnit; /** * 设备柜清单 @@ -67,6 +64,8 @@ public class RecycleDeviceController { private RecycleDeviceEventService eventService; @Resource private CustomerMqttClient mqttClient; + @Resource + private RedisUtil redisUtil; /** @@ -268,17 +267,27 @@ public class RecycleDeviceController { public ActionResult command(@RequestBody Command command) { UserInfo userInfo = userProvider.get(); Date nowDate = DateUtil.getNowDate(); - + boolean exists = redisUtil.exists("online_" + command.getDeviceCode()); + Long liveTime = redisUtil.getLiveTime("online_" + command.getDeviceCode()); + if (!exists || liveTime < 0) { + return ActionResult.fail("设备不在线!"); + } String deviceCode = command.getDeviceCode(); mqttClient.publish(deviceCode + "/command", JSONUtil.toJsonStr(command)); //记录命令下发 RecycleDeviceEventEntity event = new RecycleDeviceEventEntity(); event.setDeviceCode(command.getDeviceCode()); - if (null != command.getData() && !"".equals(command.getData().toString())) - event.setBucketCode(command.getData().toString()); + Object data = command.getData(); + if (null != command.getData() && !"".equals(data)) { + JSONObject _data = JSONUtil.parseObj(data); + String bucketCode = _data.getStr("bucketCode"); + if (StringUtil.isNotEmpty(bucketCode)) { + event.setBucketCode(bucketCode.toString()); + } + } event.setEventTime(nowDate); event.setEventType(command.getCmd().getValue()); - event.setEventDesc("手动远程控制,命令下发!"); + event.setEventDesc("手动远程控制,命令下发!" + command.getCmd().getDesc()); event.setCompanyId(userInfo.getOrganizeId()); event.setCreateTime(nowDate); event.setCreateUserId(userInfo.getUserId()); @@ -296,16 +305,17 @@ public class RecycleDeviceController { String organizeId = userInfo.getOrganizeId(); QueryWrapper wrapper = new QueryWrapper<>(); LambdaQueryWrapper lambda = wrapper.lambda(); - if(!isAdministrator){ - lambda.eq(RecycleDeviceEntity::getBeLongCompanyId,organizeId); + if (!isAdministrator) { + lambda.eq(RecycleDeviceEntity::getBeLongCompanyId, organizeId); } List list = recycleDeviceService.list(lambda); return ActionResult.success(list); } + //获取设备信息 @PostMapping("/getDeviceListInfo") @Operation(summary = "获取设备清单信息") - public ActionResult getDeviceListInfo( @RequestBody(required = false) Map objectMap) { + public ActionResult getDeviceListInfo(@RequestBody(required = false) Map objectMap) { DIDeviceListInfoModel model = JsonUtil.getJsonToBean(objectMap, DIDeviceListInfoModel.class); List ids = model.getIds(); QueryWrapper wrapper = new QueryWrapper<>(); @@ -314,6 +324,7 @@ public class RecycleDeviceController { List list = recycleDeviceService.list(lambda); return ActionResult.success(list); } + //获取商户列表 @PostMapping("/getCompanyList") @Operation(summary = "获取商户列表下拉") @@ -323,12 +334,27 @@ public class RecycleDeviceController { String organizeId = userInfo.getOrganizeId(); QueryWrapper wrapper = new QueryWrapper<>(); LambdaQueryWrapper lambda = wrapper.lambda(); - if(!isAdministrator){ - lambda.eq(CompanyEntity::getId,organizeId); + if (!isAdministrator) { + lambda.eq(CompanyEntity::getId, organizeId); } List list = companyService.list(lambda); return ActionResult.success(list); } + //获取设备信息 + @PostMapping("/getControlAuth") + @Operation(summary = "获取控制授权信息") + public ActionResult getControlAuth(@RequestBody DeviceVO deviceVO) { + String deviceCode = deviceVO.getDeviceCode(); + Object value = redisUtil.getString("auth_" + deviceCode); + long expire = redisUtil.getLiveTime("auth_" + deviceCode); + if (null == value || expire <= 0) { + return ActionResult.fail(400, "获取控制权失败"); + } else { + ControlAuthVO bean = JSONUtil.toBean(value.toString(), ControlAuthVO.class); + return ActionResult.success(bean); + } + } + } diff --git a/jnpf-java-boot/jnpf-scm/jnpf-scm-entity/src/main/java/jnpf/model/recycledevice/Command.java b/jnpf-java-boot/jnpf-scm/jnpf-scm-entity/src/main/java/jnpf/model/recycledevice/Command.java index 5d772e9..1636e83 100644 --- a/jnpf-java-boot/jnpf-scm/jnpf-scm-entity/src/main/java/jnpf/model/recycledevice/Command.java +++ b/jnpf-java-boot/jnpf-scm/jnpf-scm-entity/src/main/java/jnpf/model/recycledevice/Command.java @@ -2,6 +2,8 @@ package jnpf.model.recycledevice; import lombok.Data; +import java.util.Map; + @Data public class Command { private String orderNo; diff --git a/jnpf-java-boot/jnpf-scm/jnpf-scm-entity/src/main/java/jnpf/model/recycledevice/ControlAuthVO.java b/jnpf-java-boot/jnpf-scm/jnpf-scm-entity/src/main/java/jnpf/model/recycledevice/ControlAuthVO.java new file mode 100644 index 0000000..06f5dd8 --- /dev/null +++ b/jnpf-java-boot/jnpf-scm/jnpf-scm-entity/src/main/java/jnpf/model/recycledevice/ControlAuthVO.java @@ -0,0 +1,12 @@ +package jnpf.model.recycledevice; + +import lombok.Data; + +@Data +public class ControlAuthVO { + + private String deviceCode; + private Long applyNo; + + +} diff --git a/jnpf-java-boot/jnpf-scm/jnpf-scm-entity/src/main/java/jnpf/model/recycledevice/DeviceVO.java b/jnpf-java-boot/jnpf-scm/jnpf-scm-entity/src/main/java/jnpf/model/recycledevice/DeviceVO.java new file mode 100644 index 0000000..ee659c5 --- /dev/null +++ b/jnpf-java-boot/jnpf-scm/jnpf-scm-entity/src/main/java/jnpf/model/recycledevice/DeviceVO.java @@ -0,0 +1,11 @@ +package jnpf.model.recycledevice; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +@Data +public class DeviceVO { + @NotBlank(message = "设备编码不能为空") + private String deviceCode; +}