From cec5a72856ca270d75c781c52661e326a37f1604 Mon Sep 17 00:00:00 2001 From: tangfudong <280620913@qq.com> Date: Thu, 29 Jun 2023 18:35:29 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A=E8=AE=BE=E5=A4=87=E5=9C=B0?= =?UTF-8?q?=E5=9B=BE=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3=E8=BF=81=E7=A7=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iotkit/data/manager/IDeviceInfoData.java | 2 +- .../data/service/DeviceInfoDataCache.java | 6 +-- .../service/DeviceInfoPropertyDataCache.java | 4 +- .../data/service/DeviceInfoDataImpl.java | 54 ++++++++++--------- .../manager/controller/DeviceController.java | 30 +++++------ .../dto/vo/deviceinfo/DeviceInfoVo.java | 12 ++--- .../dto/vo/deviceinfo/ParentDeviceVo.java | 21 ++++++++ .../manager/service/IDeviceService.java | 4 +- .../service/impl/DeviceServiceImpl.java | 12 +++-- 9 files changed, 83 insertions(+), 62 deletions(-) create mode 100644 iot-module/iot-manager/src/main/java/cc/iotkit/manager/dto/vo/deviceinfo/ParentDeviceVo.java diff --git a/iot-common/iot-common-dao/iot-data-service/src/main/java/cc/iotkit/data/manager/IDeviceInfoData.java b/iot-common/iot-common-dao/iot-data-service/src/main/java/cc/iotkit/data/manager/IDeviceInfoData.java index cf9e5975..14abd16c 100644 --- a/iot-common/iot-common-dao/iot-data-service/src/main/java/cc/iotkit/data/manager/IDeviceInfoData.java +++ b/iot-common/iot-common-dao/iot-data-service/src/main/java/cc/iotkit/data/manager/IDeviceInfoData.java @@ -134,5 +134,5 @@ public interface IDeviceInfoData extends IOwnedData { * 获取所有网关类型设备 * @return */ - List> findByProductNodeType(String uid); + List findByProductNodeType(String uid); } diff --git a/iot-common/iot-common-dao/iot-data-serviceImpl-cache/src/main/java/cc/iotkit/data/service/DeviceInfoDataCache.java b/iot-common/iot-common-dao/iot-data-serviceImpl-cache/src/main/java/cc/iotkit/data/service/DeviceInfoDataCache.java index b06d0d59..fdedd2ad 100644 --- a/iot-common/iot-common-dao/iot-data-serviceImpl-cache/src/main/java/cc/iotkit/data/service/DeviceInfoDataCache.java +++ b/iot-common/iot-common-dao/iot-data-serviceImpl-cache/src/main/java/cc/iotkit/data/service/DeviceInfoDataCache.java @@ -10,12 +10,12 @@ package cc.iotkit.data.service; import cc.iotkit.common.api.PageRequest; +import cc.iotkit.common.api.Paging; import cc.iotkit.common.constant.Constants; import cc.iotkit.common.utils.JsonUtils; -import cc.iotkit.data.manager.IDeviceInfoData; import cc.iotkit.data.cache.DeviceInfoCacheEvict; import cc.iotkit.data.cache.DeviceInfoCachePut; -import cc.iotkit.common.api.Paging; +import cc.iotkit.data.manager.IDeviceInfoData; import cc.iotkit.model.device.DeviceInfo; import cc.iotkit.model.stats.DataItem; import org.apache.commons.lang3.StringUtils; @@ -131,7 +131,7 @@ public class DeviceInfoDataCache implements IDeviceInfoData, SmartInitializingSi } @Override - public List> findByProductNodeType(String uid) { + public List findByProductNodeType(String uid) { return deviceInfoData.findByProductNodeType(uid); } diff --git a/iot-common/iot-common-dao/iot-data-serviceImpl-cache/src/main/java/cc/iotkit/data/service/DeviceInfoPropertyDataCache.java b/iot-common/iot-common-dao/iot-data-serviceImpl-cache/src/main/java/cc/iotkit/data/service/DeviceInfoPropertyDataCache.java index 7cbb790b..9799ef87 100644 --- a/iot-common/iot-common-dao/iot-data-serviceImpl-cache/src/main/java/cc/iotkit/data/service/DeviceInfoPropertyDataCache.java +++ b/iot-common/iot-common-dao/iot-data-serviceImpl-cache/src/main/java/cc/iotkit/data/service/DeviceInfoPropertyDataCache.java @@ -10,8 +10,8 @@ package cc.iotkit.data.service; import cc.iotkit.common.api.PageRequest; -import cc.iotkit.data.manager.IDeviceInfoData; import cc.iotkit.common.api.Paging; +import cc.iotkit.data.manager.IDeviceInfoData; import cc.iotkit.model.device.DeviceInfo; import cc.iotkit.model.stats.DataItem; import org.springframework.beans.factory.annotation.Autowired; @@ -172,7 +172,7 @@ public class DeviceInfoPropertyDataCache implements IDeviceInfoData { } @Override - public List> findByProductNodeType(String uid) { + public List findByProductNodeType(String uid) { return deviceInfoData.findByProductNodeType(uid); } diff --git a/iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/service/DeviceInfoDataImpl.java b/iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/service/DeviceInfoDataImpl.java index 1775bb45..d81f7d40 100644 --- a/iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/service/DeviceInfoDataImpl.java +++ b/iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/service/DeviceInfoDataImpl.java @@ -14,8 +14,9 @@ import cc.iotkit.model.device.DeviceInfo; import cc.iotkit.model.product.Category; import cc.iotkit.model.product.Product; import cc.iotkit.model.stats.DataItem; +import com.querydsl.jpa.impl.JPAQueryFactory; +import lombok.RequiredArgsConstructor; import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Primary; import org.springframework.data.domain.Page; @@ -28,28 +29,34 @@ import org.springframework.transaction.annotation.Transactional; import java.util.*; import java.util.stream.Collectors; +import static cc.iotkit.data.model.QTbDeviceInfo.tbDeviceInfo; +import static cc.iotkit.data.model.QTbProduct.tbProduct; + @Primary @Service +@RequiredArgsConstructor public class DeviceInfoDataImpl implements IDeviceInfoData, IJPACommData { - @Autowired - private DeviceInfoRepository deviceInfoRepository; - @Autowired - private DeviceSubUserRepository deviceSubUserRepository; - @Autowired - private DeviceGroupMappingRepository deviceGroupMappingRepository; - @Autowired - private DeviceGroupRepository deviceGroupRepository; - @Autowired - private DeviceTagRepository deviceTagRepository; - @Autowired - private JdbcTemplate jdbcTemplate; - @Autowired + + private final DeviceInfoRepository deviceInfoRepository; + + private final DeviceSubUserRepository deviceSubUserRepository; + + private final DeviceGroupMappingRepository deviceGroupMappingRepository; + + private final DeviceGroupRepository deviceGroupRepository; + + private final DeviceTagRepository deviceTagRepository; + + private final JdbcTemplate jdbcTemplate; + @Qualifier("productDataCache") - private IProductData productData; - @Autowired + private final IProductData productData; + @Qualifier("categoryDataCache") - private ICategoryData categoryData; + private final ICategoryData categoryData; + + private final JPAQueryFactory jpaQueryFactory; @Override public JpaRepository getBaseRepository() { @@ -190,15 +197,10 @@ public class DeviceInfoDataImpl implements IDeviceInfoData, IJPACommData> findByProductNodeType(String uid) { - String sql = "SELECT\n" + - "a.id,\n" + - "a.device_name\n" + - "FROM device_info a JOIN product p ON p.node_type=0 AND a.product_key=p.id"; - if (StringUtils.isNotBlank(uid)) { - sql += " WHERE a.uid='" + uid + "'"; - } - return jdbcTemplate.queryForList(sql); + public List findByProductNodeType(String uid) { + List devices=jpaQueryFactory.select(tbDeviceInfo).from(tbDeviceInfo) + .join(tbProduct).on(tbProduct.nodeType.eq(0).and(tbDeviceInfo.productKey.eq(tbProduct.productKey))).fetch(); + return MapstructUtils.convert(devices,DeviceInfo.class); } @Override diff --git a/iot-module/iot-manager/src/main/java/cc/iotkit/manager/controller/DeviceController.java b/iot-module/iot-manager/src/main/java/cc/iotkit/manager/controller/DeviceController.java index ca4754d3..f06ba9ca 100644 --- a/iot-module/iot-manager/src/main/java/cc/iotkit/manager/controller/DeviceController.java +++ b/iot-module/iot-manager/src/main/java/cc/iotkit/manager/controller/DeviceController.java @@ -10,13 +10,8 @@ package cc.iotkit.manager.controller; import cc.iotkit.common.api.PageRequest; +import cc.iotkit.common.api.Paging; import cc.iotkit.common.api.Request; -import cc.iotkit.common.constant.Constants; -import cc.iotkit.common.enums.ErrCode; -import cc.iotkit.common.exception.BizException; -import cc.iotkit.common.satoken.utils.AuthUtil; -import cc.iotkit.common.utils.ReflectUtil; -import cc.iotkit.common.utils.UniqueIdUtil; import cc.iotkit.manager.dto.bo.device.*; import cc.iotkit.manager.dto.bo.deviceconfig.DeviceConfigAddBo; import cc.iotkit.manager.dto.bo.devicegroup.DeviceAddGroupBo; @@ -25,26 +20,29 @@ import cc.iotkit.manager.dto.bo.thingmodel.ThingModelMessageBo; import cc.iotkit.manager.dto.vo.deviceconfig.DeviceConfigVo; import cc.iotkit.manager.dto.vo.devicegroup.DeviceGroupVo; import cc.iotkit.manager.dto.vo.deviceinfo.DeviceInfoVo; +import cc.iotkit.manager.dto.vo.deviceinfo.ParentDeviceVo; import cc.iotkit.manager.dto.vo.thingmodel.ThingModelVo; -import cc.iotkit.manager.service.*; +import cc.iotkit.manager.service.DeviceService; +import cc.iotkit.manager.service.IDeviceService; +import cc.iotkit.manager.service.IProductService; import cc.iotkit.model.InvokeResult; -import cc.iotkit.common.api.Paging; import cc.iotkit.model.device.DeviceConfig; import cc.iotkit.model.device.DeviceGroup; import cc.iotkit.model.device.DeviceInfo; import cc.iotkit.model.device.message.DeviceProperty; import cc.iotkit.model.device.message.ThingModelMessage; -import io.swagger.annotations.*; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; import org.springframework.web.context.request.async.DeferredResult; -import java.util.ArrayList; import java.util.List; -import java.util.Map; @Api(tags = {"设备"}) @Slf4j @@ -99,9 +97,9 @@ public class DeviceController { return deviceServiceImpl.selectChildrenPageList(deviceId); } - @ApiOperation("获取网关") - @PostMapping("/parentDevices") - public List> getParentDevices() { + @ApiOperation("获取网关设备") + @PostMapping("/getParentDevices") + public List getParentDevices() { return deviceServiceImpl.getParentDevices(); } diff --git a/iot-module/iot-manager/src/main/java/cc/iotkit/manager/dto/vo/deviceinfo/DeviceInfoVo.java b/iot-module/iot-manager/src/main/java/cc/iotkit/manager/dto/vo/deviceinfo/DeviceInfoVo.java index f23754aa..efcf0db9 100644 --- a/iot-module/iot-manager/src/main/java/cc/iotkit/manager/dto/vo/deviceinfo/DeviceInfoVo.java +++ b/iot-module/iot-manager/src/main/java/cc/iotkit/manager/dto/vo/deviceinfo/DeviceInfoVo.java @@ -1,28 +1,22 @@ package cc.iotkit.manager.dto.vo.deviceinfo; import cc.iotkit.model.device.DeviceInfo; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.github.linpeilie.annotations.AutoMapper; import io.github.linpeilie.annotations.AutoMapping; import io.github.linpeilie.annotations.ReverseAutoMapping; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import lombok.ToString; -import java.util.Date; import java.io.Serializable; -import java.math.BigDecimal; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; -import io.github.linpeilie.annotations.AutoMapper; @ApiModel(value = "DeviceInfoVo") @Data @ExcelIgnoreUnannotated @AutoMapper(target = DeviceInfo.class) - public class DeviceInfoVo implements Serializable { private static final long serialVersionUID = -1L; diff --git a/iot-module/iot-manager/src/main/java/cc/iotkit/manager/dto/vo/deviceinfo/ParentDeviceVo.java b/iot-module/iot-manager/src/main/java/cc/iotkit/manager/dto/vo/deviceinfo/ParentDeviceVo.java new file mode 100644 index 00000000..c6229194 --- /dev/null +++ b/iot-module/iot-manager/src/main/java/cc/iotkit/manager/dto/vo/deviceinfo/ParentDeviceVo.java @@ -0,0 +1,21 @@ +package cc.iotkit.manager.dto.vo.deviceinfo; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Author:tfd + * @Date:2023/6/29 14:30 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ParentDeviceVo { + + private String id; + + private String deviceName; +} diff --git a/iot-module/iot-manager/src/main/java/cc/iotkit/manager/service/IDeviceService.java b/iot-module/iot-manager/src/main/java/cc/iotkit/manager/service/IDeviceService.java index 85683d8a..e553a70e 100644 --- a/iot-module/iot-manager/src/main/java/cc/iotkit/manager/service/IDeviceService.java +++ b/iot-module/iot-manager/src/main/java/cc/iotkit/manager/service/IDeviceService.java @@ -11,6 +11,7 @@ import cc.iotkit.manager.dto.bo.devicegroup.DeviceGroupBo; import cc.iotkit.manager.dto.vo.deviceconfig.DeviceConfigVo; import cc.iotkit.manager.dto.vo.devicegroup.DeviceGroupVo; import cc.iotkit.manager.dto.vo.deviceinfo.DeviceInfoVo; +import cc.iotkit.manager.dto.vo.deviceinfo.ParentDeviceVo; import cc.iotkit.model.device.DeviceConfig; import cc.iotkit.model.device.DeviceGroup; import cc.iotkit.model.device.DeviceInfo; @@ -19,7 +20,6 @@ import cc.iotkit.model.device.message.ThingModelMessage; import org.springframework.web.context.request.async.DeferredResult; import java.util.List; -import java.util.Map; /** * @Author: jay @@ -34,7 +34,7 @@ public interface IDeviceService { List selectChildrenPageList(String deviceId); - List> getParentDevices(); + List getParentDevices(); DeviceInfo getDetail(String deviceId); diff --git a/iot-module/iot-manager/src/main/java/cc/iotkit/manager/service/impl/DeviceServiceImpl.java b/iot-module/iot-manager/src/main/java/cc/iotkit/manager/service/impl/DeviceServiceImpl.java index 77d65aaf..83649692 100644 --- a/iot-module/iot-manager/src/main/java/cc/iotkit/manager/service/impl/DeviceServiceImpl.java +++ b/iot-module/iot-manager/src/main/java/cc/iotkit/manager/service/impl/DeviceServiceImpl.java @@ -24,6 +24,7 @@ import cc.iotkit.manager.dto.bo.devicegroup.DeviceGroupBo; import cc.iotkit.manager.dto.vo.deviceconfig.DeviceConfigVo; import cc.iotkit.manager.dto.vo.devicegroup.DeviceGroupVo; import cc.iotkit.manager.dto.vo.deviceinfo.DeviceInfoVo; +import cc.iotkit.manager.dto.vo.deviceinfo.ParentDeviceVo; import cc.iotkit.manager.service.DataOwnerService; import cc.iotkit.manager.service.DeferredDataConsumer; import cc.iotkit.manager.service.DeviceService; @@ -44,7 +45,7 @@ import org.springframework.stereotype.Service; import org.springframework.web.context.request.async.DeferredResult; import java.util.List; -import java.util.Map; +import java.util.stream.Collectors; /** * @Author: jay @@ -157,12 +158,17 @@ public class DeviceServiceImpl implements IDeviceService { } @Override - public List> getParentDevices() { + public List getParentDevices() { String uid = ""; + List pdv = null; if (!AuthUtil.isAdmin()) { uid = AuthUtil.getUserId(); } - return deviceInfoData.findByProductNodeType(uid); + List ret=deviceInfoData.findByProductNodeType(uid); + if(ret.size()>0){ + pdv=ret.stream().map(r->ParentDeviceVo.builder().id(r.getId()).deviceName(r.getDeviceName()).build()).collect(Collectors.toList()); + } + return pdv; } @Override