From a12ee50d08b9a16a4f8a8bf58217ba2ea2d70b7c Mon Sep 17 00:00:00 2001 From: zcxlsm Date: Tue, 5 Aug 2025 16:35:00 +0800 Subject: [PATCH 1/6] =?UTF-8?q?feat(device):=20=E5=A2=9E=E5=8A=A0=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E7=BB=91=E5=AE=9A=E6=A5=BC=E5=B1=82=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/sis/domain/SisDeviceBindRef.java | 4 ++++ .../org/dromara/sis/domain/SisDeviceManage.java | 5 +++++ .../dromara/sis/domain/bo/SisDeviceManageBo.java | 6 ++++++ .../dromara/sis/domain/vo/SisDeviceManageVo.java | 6 +++++- .../service/impl/SisAccessControlServiceImpl.java | 1 + .../service/impl/SisDeviceManageServiceImpl.java | 6 +++++- .../service/impl/SisElevatorInfoServiceImpl.java | 13 +++++++++---- 7 files changed, 35 insertions(+), 6 deletions(-) diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisDeviceBindRef.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisDeviceBindRef.java index 1f7dcd53..dff03c38 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisDeviceBindRef.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisDeviceBindRef.java @@ -45,5 +45,9 @@ public class SisDeviceBindRef extends TenantEntity { */ private Integer controlType; + /** + * 楼层id + */ + private Long deviceFloorId; } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisDeviceManage.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisDeviceManage.java index e18bbf54..38fd0d3c 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisDeviceManage.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisDeviceManage.java @@ -80,4 +80,9 @@ public class SisDeviceManage extends BaseEntity { private String tenantId; + /** + * 楼层id + */ + private Long floorId; + } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisDeviceManageBo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisDeviceManageBo.java index 75f6be27..81662907 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisDeviceManageBo.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisDeviceManageBo.java @@ -62,6 +62,12 @@ public class SisDeviceManageBo extends BaseEntity { @NotBlank(message = "设备密码不能为空", groups = {AddGroup.class, EditGroup.class}) private String devicePwd; + /** + * 楼层id + */ + @NotNull(message = "楼层id不能为空", groups = {AddGroup.class, EditGroup.class}) + private Long floorId; + /** * 设备类型 */ diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisDeviceManageVo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisDeviceManageVo.java index 0e0249d4..0c56837a 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisDeviceManageVo.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisDeviceManageVo.java @@ -77,6 +77,11 @@ public class SisDeviceManageVo implements Serializable { @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, mapper = "deviceType", other = "sis_ipc_device_type") private Integer deviceTypeName; + /** + * 楼层id + */ + private Long floorId; + /** * 设备厂商编号 */ @@ -90,5 +95,4 @@ public class SisDeviceManageVo implements Serializable { private Long groupId; private String groupName; - } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAccessControlServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAccessControlServiceImpl.java index a44b4352..6bf1601c 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAccessControlServiceImpl.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAccessControlServiceImpl.java @@ -141,6 +141,7 @@ public class SisAccessControlServiceImpl implements ISisAccessControlService { SisDeviceBindRef sisDeviceBindRef = new SisDeviceBindRef(); sisDeviceBindRef.setDeviceId(sisDeviceManageVo.getId()); sisDeviceBindRef.setDeviceIp(sisDeviceManageVo.getDeviceIp()); + sisDeviceBindRef.setDeviceFloorId(sisDeviceManageVo.getFloorId()); sisDeviceBindRef.setBindId(bo.getId()); sisDeviceBindRef.setControlType(ControlTypeEnum.ACCESS_CONTROL.getCode()); Boolean insert = sisDeviceBindRefService.insert(sisDeviceBindRef); diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisDeviceManageServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisDeviceManageServiceImpl.java index 86973097..2562c7fe 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisDeviceManageServiceImpl.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisDeviceManageServiceImpl.java @@ -50,7 +50,11 @@ public class SisDeviceManageServiceImpl implements ISisDeviceManageService { */ @Override public SisDeviceManageVo queryById(Long id) { - return baseMapper.selectVoById(id); + SisDeviceManageVo deviceManageVo = baseMapper.selectVoById(id); + + log.info("查询设备管理:{}", deviceManageVo); + + return deviceManageVo; } /** diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisElevatorInfoServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisElevatorInfoServiceImpl.java index 08819ef0..b0c5aa14 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisElevatorInfoServiceImpl.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisElevatorInfoServiceImpl.java @@ -20,12 +20,10 @@ import org.dromara.sis.domain.SisElevatorFloorChannelRef; import org.dromara.sis.domain.SisElevatorInfo; import org.dromara.sis.domain.bo.SisElevatorInfoBo; import org.dromara.sis.domain.enums.ControlTypeEnum; +import org.dromara.sis.domain.vo.SisDeviceManageVo; import org.dromara.sis.domain.vo.SisElevatorInfoVo; import org.dromara.sis.mapper.SisElevatorInfoMapper; -import org.dromara.sis.service.ISisDeviceBindRefService; -import org.dromara.sis.service.ISisElevatorFloorChannelRefService; -import org.dromara.sis.service.ISisElevatorFloorRefService; -import org.dromara.sis.service.ISisElevatorInfoService; +import org.dromara.sis.service.*; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -45,6 +43,7 @@ import static org.dromara.common.core.constant.CodePrefixConstants.ELEVATOR_CONT public class SisElevatorInfoServiceImpl implements ISisElevatorInfoService { private final SisElevatorInfoMapper baseMapper; + private final ISisDeviceManageService deviceManageService; private final ISisDeviceBindRefService deviceBindRefService; private final ISisElevatorFloorRefService elevatorFloorRefService; private final ISisElevatorFloorChannelRefService elevatorFloorChannelRefService; @@ -201,20 +200,26 @@ public class SisElevatorInfoServiceImpl implements ISisElevatorInfoService { List ls = new ArrayList<>(); // 梯控 if (bo.getElevatorControlDeviceId() != null) { + SisDeviceManageVo vo = deviceManageService.queryById(bo.getElevatorControlDeviceId().getDeviceId()); + SisDeviceBindRef ref = new SisDeviceBindRef(); ref.setDeviceId(bo.getElevatorControlDeviceId().getDeviceId()); ref.setDeviceIp(bo.getElevatorControlDeviceId().getDeviceIp()); ref.setBindId(bo.getElevatorId()); + ref.setDeviceFloorId(vo.getFloorId()); ref.setControlType(ControlTypeEnum.ELEVATOR_CONTROL.getCode()); ls.add(ref); } // 远程呼叫 if (bo.getRemoteCallElevatorDeviceId() != null && !bo.getRemoteCallElevatorDeviceId().isEmpty()) { for (SisElevatorInfoBo.DeviceInfo deviceInfo : bo.getRemoteCallElevatorDeviceId()) { + SisDeviceManageVo vo = deviceManageService.queryById(deviceInfo.getDeviceId()); + SisDeviceBindRef ref = new SisDeviceBindRef(); ref.setDeviceId(deviceInfo.getDeviceId()); ref.setDeviceIp(deviceInfo.getDeviceIp()); ref.setBindId(bo.getElevatorId()); + ref.setDeviceFloorId(vo.getFloorId()); ref.setControlType(ControlTypeEnum.REMOTE_CALL_ELEVATOR.getCode()); ls.add(ref); } From db58a91252651d95d23ade334eb01a8764a0a4ff Mon Sep 17 00:00:00 2001 From: zcxlsm Date: Wed, 6 Aug 2025 09:14:07 +0800 Subject: [PATCH 2/6] =?UTF-8?q?feat(sis):=20-=20=E6=96=B0=E5=A2=9E=20Rocke?= =?UTF-8?q?tMQ=20=E6=B6=88=E6=81=AF=E9=98=9F=E5=88=97=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E5=92=8C=E7=9B=B8=E5=85=B3=E6=9C=8D=E5=8A=A1=20-=20=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0=E8=BF=9C=E7=A8=8B=E5=BC=80=E9=97=A8=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=92=8C=E6=9C=8D=E5=8A=A1=E6=96=B9=E6=B3=95=20-=20=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E6=A2=AF=E6=8E=A7=E4=B8=8B=E5=8F=91=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-modules/Sis/pom.xml | 5 ++ .../consumer/CleanLiftAuthRocketConsumer.java | 64 +++++++++++++++++++ .../SisAccessControlController.java | 13 ++++ .../sis/domain/bo/SisDeviceBindRefBo.java | 5 +- .../sis/domain/vo/SisDeviceBindRefVo.java | 5 +- .../sis/domain/vo/SisElevatorFloorRefVo.java | 9 +++ .../producer/CleanLiftAuthRocketProducer.java | 39 +++++++++++ .../accessControl/req/RemoteOpenDoorReq.java | 6 ++ .../sis/service/ISisAccessControlService.java | 10 ++- .../impl/SisAccessControlServiceImpl.java | 24 ++++++- .../Sis/src/main/resources/application.yml | 7 +- 11 files changed, 182 insertions(+), 5 deletions(-) create mode 100644 ruoyi-modules/Sis/src/main/java/org/dromara/sis/consumer/CleanLiftAuthRocketConsumer.java create mode 100644 ruoyi-modules/Sis/src/main/java/org/dromara/sis/producer/CleanLiftAuthRocketProducer.java diff --git a/ruoyi-modules/Sis/pom.xml b/ruoyi-modules/Sis/pom.xml index 0152e6d0..5985c62c 100644 --- a/ruoyi-modules/Sis/pom.xml +++ b/ruoyi-modules/Sis/pom.xml @@ -118,6 +118,11 @@ 2.4.0 + + org.apache.rocketmq + rocketmq-spring-boot-starter + + com.hik examples diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/consumer/CleanLiftAuthRocketConsumer.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/consumer/CleanLiftAuthRocketConsumer.java new file mode 100644 index 00000000..dca65425 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/consumer/CleanLiftAuthRocketConsumer.java @@ -0,0 +1,64 @@ +package org.dromara.sis.consumer; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.rocketmq.common.message.MessageExt; +import org.apache.rocketmq.spring.annotation.RocketMQMessageListener; +import org.apache.rocketmq.spring.core.RocketMQListener; +import org.dromara.sis.domain.vo.SisElevatorFloorRefVo; +import org.dromara.sis.domain.vo.SisElevatorInfoVo; +import org.dromara.sis.sdk.hik.HikApiService; +import org.dromara.sis.service.ISisElevatorFloorRefService; +import org.dromara.sis.service.ISisElevatorInfoService; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.Objects; + +/** + * @author lsm + * @apiNote CleanLiftAuthRocketConsumer + * @since 2025/8/5 + */ +@Slf4j +@Component +@RequiredArgsConstructor +@RocketMQMessageListener(topic = "lift-topic", consumerGroup = "lift-consumer-group") +public class CleanLiftAuthRocketConsumer implements RocketMQListener { + + private final ISisElevatorInfoService sisElevatorInfoService; + private final ISisElevatorFloorRefService sisElevatorFloorRefService; + + @Override + public void onMessage(MessageExt ext) { + log.info("【消费者】接收消息:消息体 => {}", new String(ext.getBody())); + +// Long deviceId = Long.parseLong(ext.getUserProperty("deviceId")); +// Long groupId = Long.parseLong(ext.getUserProperty("groupId")); +// Long deviceFloorId = Long.parseLong(ext.getUserProperty("deviceFloorId")); +// +// // 获取当前电梯信息 +// SisElevatorInfoVo ele = sisElevatorInfoService.queryById(deviceId); +// +// // 获取权限组下电梯⇄楼层关联信息 +// List groupRef = sisElevatorFloorRefService.queryByAuthGroupId(groupId); +// +// // 取出当前电梯的楼层授权信息 +// List eleRef = groupRef.stream().filter(o -> Objects.equals(o.getElevatorId(), deviceId)).toList(); +// +// for (SisElevatorFloorRefVo ref : eleRef){ +// if (ref.getOutChannel() != null && Objects.equals(ref.getFloorId(), deviceFloorId)){ +// HikApiService.getInstance().controlGateway(ele.getControlIp(), ref.getOutChannel().intValue(), 3); +// } +// +// if (ref.getInChannel() != null && Objects.equals(ref.getFloorId(), deviceFloorId)){ +// HikApiService.getInstance().controlGateway(ele.getControlIp(), ref.getInChannel().intValue(), 3); +// } +// } + + HikApiService.getInstance().controlGateway("192.168.24.188", 1, 3); + HikApiService.getInstance().controlGateway("192.168.24.188", 2, 3); + + log.info("梯控清除权限完成"); + } +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisAccessControlController.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisAccessControlController.java index c0c34452..54c80725 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisAccessControlController.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisAccessControlController.java @@ -18,6 +18,7 @@ import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.web.core.BaseController; import org.dromara.sis.domain.bo.SisAccessControlBo; import org.dromara.sis.domain.vo.SisAccessControlVo; +import org.dromara.sis.sdk.e8.domain.accessControl.req.RemoteOpenDoorReq; import org.dromara.sis.service.ISisAccessControlService; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -126,4 +127,16 @@ public class SisAccessControlController extends BaseController { return R.ok(sisAccessControlService.syncE8()); } + + /** + * 远程开门 + * + * @param req 远程开门参数 + */ + @PostMapping("/e8/remoteOpenDoor") + public R remoteOpenDoor(@RequestBody RemoteOpenDoorReq req) { + return R.ok(sisAccessControlService.remoteOpenDoor(req)); + } + + } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisDeviceBindRefBo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisDeviceBindRefBo.java index 8bb20811..ea6fb647 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisDeviceBindRefBo.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisDeviceBindRefBo.java @@ -46,5 +46,8 @@ public class SisDeviceBindRefBo extends BaseEntity { @NotNull(message = "控制类型(1:门禁,2:电梯呼梯,3:电梯梯控不能为空", groups = { AddGroup.class, EditGroup.class }) private Integer controlType; - + /** + * 楼层id + */ + private Long deviceFloorId; } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisDeviceBindRefVo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisDeviceBindRefVo.java index 02a76655..9c5a13e6 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisDeviceBindRefVo.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisDeviceBindRefVo.java @@ -53,6 +53,9 @@ public class SisDeviceBindRefVo implements Serializable { @ExcelProperty(value = "控制类型(1:门禁,2:电梯呼梯,3:电梯梯控") private Integer controlType; - + /** + * 楼层id + */ + private Long deviceFloorId; } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisElevatorFloorRefVo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisElevatorFloorRefVo.java index 0ebdd583..6ba04fae 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisElevatorFloorRefVo.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisElevatorFloorRefVo.java @@ -50,5 +50,14 @@ public class SisElevatorFloorRefVo implements Serializable { @ExcelProperty(value = "授权组id") private Long authGroupId; + /** + * 内部通道号 + */ + private Long inChannel; + + /** + * 外部通道号 + */ + private Long outChannel; } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/producer/CleanLiftAuthRocketProducer.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/producer/CleanLiftAuthRocketProducer.java new file mode 100644 index 00000000..aafcf234 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/producer/CleanLiftAuthRocketProducer.java @@ -0,0 +1,39 @@ +package org.dromara.sis.producer; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.rocketmq.common.message.Message; +import org.apache.rocketmq.spring.core.RocketMQTemplate; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * @author lsm + * @apiNote CleanLiftAuthRocketProducer + * @since 2025/8/5 + */ +@Slf4j +@Component +@RequiredArgsConstructor +public class CleanLiftAuthRocketProducer { + + @Resource + private RocketMQTemplate rocketMQTemplate; + + public void sendMessage(Long deviceId, Long groupId, Long deviceFloorId, String info, Integer lay) { + // 发送延迟消息 + // RocketMQ预定义了一些延迟等级,每个等级对应不同的延迟时间范围。这些等级从1到18,分别对应1s、5s、10s、30s、1m、2m、3m、4m、5m、6m、7m、8m、9m、10m、20m、30m、1h、2h的延迟时间。 + org.apache.rocketmq.common.message.Message msg = new Message("lift-topic", "lift-tag", info.getBytes()); + msg.putUserProperty("deviceId", deviceId.toString()); + msg.putUserProperty("groupId", groupId.toString()); + msg.putUserProperty("deviceFloorId", deviceFloorId.toString()); + msg.setDelayTimeLevel(lay); + try { + rocketMQTemplate.getProducer().send(msg); + log.info("发送RocketMQ消息成功"); + } catch (Exception e) { + log.error("发送RocketMQ消息失败", e); + } + } +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/accessControl/req/RemoteOpenDoorReq.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/accessControl/req/RemoteOpenDoorReq.java index c4b98512..8262a131 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/accessControl/req/RemoteOpenDoorReq.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/accessControl/req/RemoteOpenDoorReq.java @@ -2,6 +2,7 @@ package org.dromara.sis.sdk.e8.domain.accessControl.req; import lombok.Data; +import java.util.Collection; import java.util.List; /** @@ -27,6 +28,11 @@ public class RemoteOpenDoorReq { */ private Long operatorId; + /** + * 门禁IDs + */ + private Collection acIds; + /** * 门操作数据 */ diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisAccessControlService.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisAccessControlService.java index d9bdb48b..acc08a0d 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisAccessControlService.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisAccessControlService.java @@ -5,6 +5,7 @@ import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.sis.domain.bo.SisAccessControlBo; import org.dromara.sis.domain.vo.SisAccessControlVo; +import org.dromara.sis.sdk.e8.domain.accessControl.req.RemoteOpenDoorReq; import java.util.Collection; import java.util.List; @@ -78,7 +79,7 @@ public interface ISisAccessControlService { /** * 查询门禁树 * - * @return + * @return 树 */ List> queryAcTree(); @@ -89,4 +90,11 @@ public interface ISisAccessControlService { */ Boolean syncE8(); + /** + * 远程开门 + * + * @param req 远程开门参数 + */ + Boolean remoteOpenDoor(RemoteOpenDoorReq req); + } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAccessControlServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAccessControlServiceImpl.java index 6bf1601c..07a780c1 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAccessControlServiceImpl.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAccessControlServiceImpl.java @@ -23,6 +23,7 @@ import org.dromara.sis.domain.vo.SisAccessControlVo; import org.dromara.sis.domain.vo.SisDeviceManageVo; import org.dromara.sis.mapper.SisAccessControlMapper; import org.dromara.sis.sdk.e8.E8PlatformApi; +import org.dromara.sis.sdk.e8.domain.accessControl.req.RemoteOpenDoorReq; import org.dromara.sis.sdk.e8.domain.door.res.AuthDoorDeviceFindRes; import org.dromara.sis.service.ISisAccessControlService; import org.dromara.sis.service.ISisDeviceBindRefService; @@ -50,6 +51,7 @@ public class SisAccessControlServiceImpl implements ISisAccessControlService { private final E8PlatformApi e8PlatformApi; private final ISisDeviceManageService sisDeviceManageService; private final ISisDeviceBindRefService sisDeviceBindRefService; + @DubboReference private RemoteFloorService remoteFloorService; @@ -221,7 +223,7 @@ public class SisAccessControlServiceImpl implements ISisAccessControlService { .toList(); Collection sisACBos = new ArrayList<>(); - for (AuthDoorDeviceFindRes res : filter){ + for (AuthDoorDeviceFindRes res : filter) { SisAccessControl ac = new SisAccessControl(); ac.setFactoryCode(res.getDeviceNo()); ac.setAccessCode(res.getDeviceId().toString()); @@ -238,4 +240,24 @@ public class SisAccessControlServiceImpl implements ISisAccessControlService { } return baseMapper.insertBatch(sisACBos); } + + /** + * 远程开门 + * + * @param req 远程开门参数 + */ + @Override + public Boolean remoteOpenDoor(RemoteOpenDoorReq req) { + List vo = baseMapper.selectVoByIds(req.getAcIds()); + + List list = new ArrayList<>(); + for (SisAccessControlVo item : vo) { + RemoteOpenDoorReq.ControlData data = new RemoteOpenDoorReq.ControlData(); + data.setDoorId(Long.parseLong(item.getOutDoorCode())); + data.setDeviceId(Long.parseLong(item.getOutCode())); + list.add(data); + } + req.setControlList(list); + return e8PlatformApi.remoteOpenDoor(req); + } } diff --git a/ruoyi-modules/Sis/src/main/resources/application.yml b/ruoyi-modules/Sis/src/main/resources/application.yml index 0715e047..33447213 100644 --- a/ruoyi-modules/Sis/src/main/resources/application.yml +++ b/ruoyi-modules/Sis/src/main/resources/application.yml @@ -43,4 +43,9 @@ spring: - optional:nacos:datasource.yml - optional:nacos:${spring.application.name}.yml - +--- # rocketmq 配置 +rocketmq: + name-server: 192.168.24.101:9876 + producer: + # 生产者组 + group: dist-test From a4e40f5123bae89523a4529a2953229f859604b6 Mon Sep 17 00:00:00 2001 From: zcxlsm Date: Wed, 6 Aug 2025 09:16:23 +0800 Subject: [PATCH 3/6] =?UTF-8?q?feat(sis):=20-=20=E6=96=B0=E5=A2=9E=20Rocke?= =?UTF-8?q?tMQ=20=E6=B6=88=E6=81=AF=E9=98=9F=E5=88=97=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E5=92=8C=E7=9B=B8=E5=85=B3=E6=9C=8D=E5=8A=A1=20-=20=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0=E8=BF=9C=E7=A8=8B=E5=BC=80=E9=97=A8=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=92=8C=E6=9C=8D=E5=8A=A1=E6=96=B9=E6=B3=95=20-=20=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E6=A2=AF=E6=8E=A7=E4=B8=8B=E5=8F=91=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../consumer/CleanLiftAuthRocketConsumer.java | 44 +++++++++---------- .../sis/mapper/SisAccessControlMapper.java | 4 +- 2 files changed, 23 insertions(+), 25 deletions(-) diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/consumer/CleanLiftAuthRocketConsumer.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/consumer/CleanLiftAuthRocketConsumer.java index dca65425..b2e9323a 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/consumer/CleanLiftAuthRocketConsumer.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/consumer/CleanLiftAuthRocketConsumer.java @@ -33,32 +33,28 @@ public class CleanLiftAuthRocketConsumer implements RocketMQListener public void onMessage(MessageExt ext) { log.info("【消费者】接收消息:消息体 => {}", new String(ext.getBody())); -// Long deviceId = Long.parseLong(ext.getUserProperty("deviceId")); -// Long groupId = Long.parseLong(ext.getUserProperty("groupId")); -// Long deviceFloorId = Long.parseLong(ext.getUserProperty("deviceFloorId")); -// -// // 获取当前电梯信息 -// SisElevatorInfoVo ele = sisElevatorInfoService.queryById(deviceId); -// -// // 获取权限组下电梯⇄楼层关联信息 -// List groupRef = sisElevatorFloorRefService.queryByAuthGroupId(groupId); -// -// // 取出当前电梯的楼层授权信息 -// List eleRef = groupRef.stream().filter(o -> Objects.equals(o.getElevatorId(), deviceId)).toList(); -// -// for (SisElevatorFloorRefVo ref : eleRef){ -// if (ref.getOutChannel() != null && Objects.equals(ref.getFloorId(), deviceFloorId)){ -// HikApiService.getInstance().controlGateway(ele.getControlIp(), ref.getOutChannel().intValue(), 3); -// } -// -// if (ref.getInChannel() != null && Objects.equals(ref.getFloorId(), deviceFloorId)){ -// HikApiService.getInstance().controlGateway(ele.getControlIp(), ref.getInChannel().intValue(), 3); -// } -// } + Long deviceId = Long.parseLong(ext.getUserProperty("deviceId")); + Long groupId = Long.parseLong(ext.getUserProperty("groupId")); + Long deviceFloorId = Long.parseLong(ext.getUserProperty("deviceFloorId")); - HikApiService.getInstance().controlGateway("192.168.24.188", 1, 3); - HikApiService.getInstance().controlGateway("192.168.24.188", 2, 3); + // 获取当前电梯信息 + SisElevatorInfoVo ele = sisElevatorInfoService.queryById(deviceId); + // 获取权限组下电梯⇄楼层关联信息 + List groupRef = sisElevatorFloorRefService.queryByAuthGroupId(groupId); + + // 取出当前电梯的楼层授权信息 + List eleRef = groupRef.stream().filter(o -> Objects.equals(o.getElevatorId(), deviceId)).toList(); + + for (SisElevatorFloorRefVo ref : eleRef){ + if (ref.getOutChannel() != null && Objects.equals(ref.getFloorId(), deviceFloorId)){ + HikApiService.getInstance().controlGateway(ele.getControlIp(), ref.getOutChannel().intValue(), 3); + } + + if (ref.getInChannel() != null && Objects.equals(ref.getFloorId(), deviceFloorId)){ + HikApiService.getInstance().controlGateway(ele.getControlIp(), ref.getInChannel().intValue(), 3); + } + } log.info("梯控清除权限完成"); } } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/SisAccessControlMapper.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/SisAccessControlMapper.java index 6a593fd7..226224b8 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/SisAccessControlMapper.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/SisAccessControlMapper.java @@ -1,5 +1,6 @@ package org.dromara.sis.mapper; +import org.apache.ibatis.annotations.Mapper; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.sis.domain.SisAccessControl; import org.dromara.sis.domain.vo.SisAccessControlVo; @@ -8,8 +9,9 @@ import org.dromara.sis.domain.vo.SisAccessControlVo; * 门禁设备Mapper接口 * * @author lxj - * @date 2025-06-25 + * @since 2025-06-25 */ +@Mapper public interface SisAccessControlMapper extends BaseMapperPlus { SisAccessControlVo queryById(Long id); From 00ad9a13301d4af3f91a23a5ae7d2537180e8454 Mon Sep 17 00:00:00 2001 From: dev_ljl <2590379346@qq.com> Date: Wed, 6 Aug 2025 09:50:50 +0800 Subject: [PATCH 4/6] =?UTF-8?q?feat=EF=BC=9A=E5=B7=A5=E5=8D=95=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E6=A0=91=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ServiceWorkOrdersTypeController.java | 9 ++++++ .../domain/ServiceWorkOrdersType.java | 5 +++ .../domain/bo/ServiceWorkOrdersTypeBo.java | 5 +++ .../domain/vo/ServiceWorkOrdersTypeVo.java | 13 +++++++- .../IServiceWorkOrdersTypeService.java | 6 ++++ .../ServiceWorkOrdersTypeServiceImpl.java | 32 +++++++++++++++++++ 6 files changed, 69 insertions(+), 1 deletion(-) diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/ServiceWorkOrdersTypeController.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/ServiceWorkOrdersTypeController.java index 90c08a0b..19eea6d4 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/ServiceWorkOrdersTypeController.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/ServiceWorkOrdersTypeController.java @@ -103,4 +103,13 @@ public class ServiceWorkOrdersTypeController extends BaseController { @PathVariable("ids") Long[] ids) { return toAjax(serviceWorkOrdersTypeService.deleteWithValidByIds(List.of(ids), true)); } + + /** + * 查询【工单类型】树结构 + */ + @SaCheckPermission("system:workOrdersType:list") + @GetMapping("/typeTree") + public R typeTree() { + return R.ok(serviceWorkOrdersTypeService.typeTree()) ; + } } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/ServiceWorkOrdersType.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/ServiceWorkOrdersType.java index 95677afb..4837b99e 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/ServiceWorkOrdersType.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/ServiceWorkOrdersType.java @@ -62,4 +62,9 @@ public class ServiceWorkOrdersType extends TenantEntity { */ private String searchValue; + /** + *上级类型id + */ + private Long parentId; + } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/ServiceWorkOrdersTypeBo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/ServiceWorkOrdersTypeBo.java index ab0d9a20..3d7d0ca9 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/ServiceWorkOrdersTypeBo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/ServiceWorkOrdersTypeBo.java @@ -60,4 +60,9 @@ public class ServiceWorkOrdersTypeBo extends BaseEntity { */ private Integer isTransfers; + /** + *上级类型id + */ + private Long parentId; + } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersTypeVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersTypeVo.java index b56c3c54..c6c49fab 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersTypeVo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersTypeVo.java @@ -8,7 +8,8 @@ import org.dromara.property.domain.ServiceWorkOrdersType; import java.io.Serial; import java.io.Serializable; - +import java.util.ArrayList; +import java.util.List; /** @@ -75,4 +76,14 @@ public class ServiceWorkOrdersTypeVo implements Serializable { @ExcelProperty(value = "搜索值") private String searchValue; + /** + * 上级类型id + */ + private Long parentId; + + /** + * 子级类型 + */ + private List children = new ArrayList<>(); + } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/IServiceWorkOrdersTypeService.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/IServiceWorkOrdersTypeService.java index a838a21e..a578ced8 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/IServiceWorkOrdersTypeService.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/IServiceWorkOrdersTypeService.java @@ -65,4 +65,10 @@ public interface IServiceWorkOrdersTypeService { * @return 是否删除成功 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 查询【工单类型】树结构 + * @return 工单类型树结构 + */ + List typeTree(); } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/ServiceWorkOrdersTypeServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/ServiceWorkOrdersTypeServiceImpl.java index ca7db910..4256baea 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/ServiceWorkOrdersTypeServiceImpl.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/ServiceWorkOrdersTypeServiceImpl.java @@ -18,6 +18,7 @@ import org.dromara.property.service.IServiceWorkOrdersTypeService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Collection; @@ -138,4 +139,35 @@ public class ServiceWorkOrdersTypeServiceImpl implements IServiceWorkOrdersTypeS } return baseMapper.deleteByIds(ids) > 0; } + + /** + * 查询【工单类型】树结构 + * @return 工单类型树结构 + */ + @Override + public List typeTree() { + List list = baseMapper.selectVoList(); + return buildTree(list,null); + } + + + /** + * 递归构建树结构 + * @param types 所有类型列表 + * @param parentId 父节点id + * @return 树结构列表 + */ + public static List buildTree(List types, Long parentId) { + List tree = new ArrayList<>(); + for (ServiceWorkOrdersTypeVo type : types) { + Long currentParentId = type.getParentId(); + if ((parentId == null && currentParentId == null) || + (parentId != null && parentId.equals(currentParentId))) { + List children = buildTree(types, type.getId()); + type.getChildren().addAll(children); + tree.add(type); + } + } + return tree; + } } From 4acfdb6b359b88674f935b89a8fb2a0cb027d3d5 Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Wed, 6 Aug 2025 10:02:11 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E8=AE=BF=E5=AE=A2=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TbVisitorManagementController.java | 6 ++- .../resource/controller/SysOssController.java | 28 ++++++++++++++ .../dromara/resource/domain/QrCodeInfo.java | 10 +++++ .../resource/service/ISysOssService.java | 9 +++++ .../service/impl/SysOssServiceImpl.java | 37 +++++++++++++++++-- 5 files changed, 84 insertions(+), 6 deletions(-) create mode 100644 ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/domain/QrCodeInfo.java diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/TbVisitorManagementController.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/TbVisitorManagementController.java index 3fc2c1e2..bf854706 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/TbVisitorManagementController.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/TbVisitorManagementController.java @@ -70,8 +70,10 @@ public class TbVisitorManagementController extends BaseController { */ @PostMapping("/getcode") public R getcode(QrCodeInfo qrCodeInfo) { - Long string = (Long) StpUtil.getLoginId(); - qrCodeInfo.setUserid(string); + String userid =StpUtil.getLoginId().toString(); + String[] split = userid.split(":"); + Long s1 = Long.valueOf(split[1]); + qrCodeInfo.setUserid(s1); String s = remoteConfigService.selectQrTimeOut(); int i = Integer.parseInt(s); UUID value = UUID.randomUUID(); diff --git a/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/controller/SysOssController.java b/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/controller/SysOssController.java index 77beb930..f8c469ba 100644 --- a/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/controller/SysOssController.java +++ b/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/controller/SysOssController.java @@ -6,11 +6,13 @@ import cn.hutool.core.util.ObjectUtil; import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.R; import org.dromara.common.core.validate.QueryGroup; +import org.dromara.common.redis.utils.RedisUtils; import org.dromara.common.web.core.BaseController; import org.dromara.common.log.annotation.Log; import org.dromara.common.log.enums.BusinessType; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.resource.domain.QrCodeInfo; import org.dromara.resource.domain.bo.SysOssBo; import org.dromara.resource.domain.vo.SysOssUploadVo; import org.dromara.resource.domain.vo.SysOssVo; @@ -80,6 +82,32 @@ public class SysOssController extends BaseController { return R.ok(uploadVo); } + + /** + * 上传OSS对象存储 + * + * @param file 文件 + */ + @SaCheckPermission("system:oss:upload") + @Log(title = "OSS对象存储", businessType = BusinessType.INSERT) + @PostMapping(value = "/qrupload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + public R codeUpload(@RequestPart("file") MultipartFile file,String code) { + if (ObjectUtil.isNull(file)) { + return R.fail("上传文件不能为空"); + } + QrCodeInfo info = RedisUtils.getCacheObject("Qrcode" + code); + if (info==null){ + return R.fail("二维码已过期"); + } + + SysOssVo oss = iSysOssService.qrupload(file,info); + SysOssUploadVo uploadVo = new SysOssUploadVo(); + uploadVo.setUrl(oss.getUrl()); + uploadVo.setFileName(oss.getOriginalName()); + uploadVo.setOssId(oss.getOssId().toString()); + return R.ok(uploadVo); + } + /** * 下载OSS对象存储 * diff --git a/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/domain/QrCodeInfo.java b/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/domain/QrCodeInfo.java new file mode 100644 index 00000000..975ed6b2 --- /dev/null +++ b/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/domain/QrCodeInfo.java @@ -0,0 +1,10 @@ +package org.dromara.resource.domain; +import lombok.Data; + +@Data +public class QrCodeInfo { + private String deviceCode; // 对应“设备码” + private String generateTime; // 对应“生成时间” + private String qrCodeId; // 对应“二维码ID” + private Long userid; +} diff --git a/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/service/ISysOssService.java b/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/service/ISysOssService.java index 76c545ee..22472437 100644 --- a/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/service/ISysOssService.java +++ b/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/service/ISysOssService.java @@ -3,6 +3,7 @@ package org.dromara.resource.service; import jakarta.servlet.http.HttpServletResponse; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.resource.domain.QrCodeInfo; import org.dromara.resource.domain.bo.SysOssBo; import org.dromara.resource.domain.vo.SysOssVo; import org.springframework.web.multipart.MultipartFile; @@ -60,6 +61,14 @@ public interface ISysOssService { */ SysOssVo upload(MultipartFile file); + /** + * 上传 MultipartFile 到对象存储服务,并保存文件信息到数据库 + * + * @param file 要上传的 MultipartFile 对象 + * @return 上传成功后的 SysOssVo 对象,包含文件信息 + */ + SysOssVo qrupload(MultipartFile file, QrCodeInfo qrCodeInfo); + /** * 上传文件到对象存储服务,并保存文件信息到数据库 * diff --git a/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/service/impl/SysOssServiceImpl.java b/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/service/impl/SysOssServiceImpl.java index 2e94612c..6069bc5d 100644 --- a/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/service/impl/SysOssServiceImpl.java +++ b/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/service/impl/SysOssServiceImpl.java @@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import org.dromara.common.core.constant.CacheNames; +import org.dromara.common.core.domain.R; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.SpringUtils; @@ -20,6 +21,8 @@ import org.dromara.common.oss.core.OssClient; import org.dromara.common.oss.entity.UploadResult; import org.dromara.common.oss.enums.AccessPolicyType; import org.dromara.common.oss.factory.OssFactory; +import org.dromara.common.redis.utils.RedisUtils; +import org.dromara.resource.domain.QrCodeInfo; import org.dromara.resource.domain.SysOss; import org.dromara.resource.domain.bo.SysOssBo; import org.dromara.resource.domain.vo.SysOssVo; @@ -33,10 +36,7 @@ import org.springframework.web.multipart.MultipartFile; import java.io.File; import java.io.IOException; import java.time.Duration; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -199,6 +199,21 @@ public class SysOssServiceImpl implements ISysOssService { return buildResultEntity(originalfileName, suffix, storage.getConfigKey(), uploadResult); } + @Override + public SysOssVo qrupload(MultipartFile file, QrCodeInfo info) { + String originalfileName = file.getOriginalFilename(); + String suffix = StringUtils.substring(originalfileName, originalfileName.lastIndexOf("."), originalfileName.length()); + OssClient storage = OssFactory.instance(); + UploadResult uploadResult; + try { + uploadResult = storage.uploadSuffix(file.getBytes(), suffix, file.getContentType()); + } catch (IOException e) { + throw new ServiceException(e.getMessage()); + } + // 保存文件信息 + return buildResultEntityQr(originalfileName, suffix, storage.getConfigKey(), uploadResult,info); + } + /** * 上传文件到对象存储服务,并保存文件信息到数据库 * @@ -227,6 +242,20 @@ public class SysOssServiceImpl implements ISysOssService { return this.matchingUrl(sysOssVo); } + private SysOssVo buildResultEntityQr(String originalfileName, String suffix, String configKey, UploadResult uploadResult,QrCodeInfo info) { + SysOss oss = new SysOss(); + oss.setUrl(uploadResult.getUrl()); + oss.setFileSuffix(suffix); + oss.setFileName(uploadResult.getFilename()); + oss.setOriginalName(originalfileName); + oss.setService(configKey); + oss.setCreateBy(info.getUserid()); + oss.setCreateTime(new Date()); + baseMapper.insert(oss); + SysOssVo sysOssVo = MapstructUtils.convert(oss, SysOssVo.class); + return this.matchingUrl(sysOssVo); + } + /** * 新增OSS对象存储 * From 3fa1beca78bd13740e05dfaa2d4abb0575cfe1e7 Mon Sep 17 00:00:00 2001 From: dev_ljl <2590379346@qq.com> Date: Wed, 6 Aug 2025 10:08:15 +0800 Subject: [PATCH 6/6] =?UTF-8?q?feat=EF=BC=9A=E5=B7=A5=E5=8D=95=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E6=A0=91=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../property/controller/ServiceWorkOrdersTypeController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/ServiceWorkOrdersTypeController.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/ServiceWorkOrdersTypeController.java index 19eea6d4..7c124cde 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/ServiceWorkOrdersTypeController.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/ServiceWorkOrdersTypeController.java @@ -109,7 +109,7 @@ public class ServiceWorkOrdersTypeController extends BaseController { */ @SaCheckPermission("system:workOrdersType:list") @GetMapping("/typeTree") - public R typeTree() { + public R> typeTree() { return R.ok(serviceWorkOrdersTypeService.typeTree()) ; } }