Browse Source

更改redis token

lihui001 3 years ago
parent
commit
51c4247ddf
19 changed files with 246 additions and 53 deletions
  1. 12 5
      zoniot-common/zoniot-core-utils/src/main/java/com/zcxk/core/utils/http/HttpClientPoolUtil.java
  2. 1 2
      zoniot-common/zoniot-iot-sync/src/main/java/com/zcxk/iot/sync/auth/AuthIotService.java
  3. 7 2
      zoniot-common/zoniot-iot-sync/src/main/java/com/zcxk/iot/sync/utils/HttpUtil.java
  4. 1 1
      zoniot-water/zoniot-water-api/src/main/java/com/zcxk/water/api/dto/AlarmTypeDTO.java
  5. 3 4
      zoniot-water/zoniot-water-api/src/main/java/com/zcxk/water/api/dto/query/AlarmDetailsPageDto.java
  6. 25 0
      zoniot-water/zoniot-water-api/src/main/java/com/zcxk/water/api/dto/query/DeviceSceneDto.java
  7. 22 0
      zoniot-water/zoniot-water-api/src/main/java/com/zcxk/water/api/enums/SceneTypeEnum.java
  8. 13 0
      zoniot-water/zoniot-water-core/src/main/java/com/zcxk/water/core/dao/DeviceMapper.java
  9. 48 0
      zoniot-water/zoniot-water-core/src/main/java/com/zcxk/water/core/mapper/DeviceMapper.xml
  10. 9 1
      zoniot-water/zoniot-water-web/src/main/java/com/zcxk/water/web/component/SyncComponent.java
  11. 0 2
      zoniot-water/zoniot-water-web/src/main/java/com/zcxk/water/web/config/WaterApplicationRunner.java
  12. 28 29
      zoniot-water/zoniot-water-web/src/main/java/com/zcxk/water/web/controller/AlarmDetailsController.java
  13. 7 0
      zoniot-water/zoniot-water-web/src/main/java/com/zcxk/water/web/controller/DeviceController.java
  14. 2 2
      zoniot-water/zoniot-water-web/src/main/java/com/zcxk/water/web/controller/OnlineMonitorController.java
  15. 10 0
      zoniot-water/zoniot-water-web/src/main/java/com/zcxk/water/web/service/DeviceService.java
  16. 0 1
      zoniot-water/zoniot-water-web/src/main/java/com/zcxk/water/web/service/SyncService.java
  17. 1 4
      zoniot-water/zoniot-water-web/src/main/java/com/zcxk/water/web/service/impl/AbstractProductSyncService.java
  18. 30 0
      zoniot-water/zoniot-water-web/src/main/java/com/zcxk/water/web/service/impl/DeviceServiceImpl.java
  19. 27 0
      zoniot-water/zoniot-water-web/src/main/java/com/zcxk/water/web/service/impl/SceneTypeService.java

+ 12 - 5
zoniot-common/zoniot-core-utils/src/main/java/com/zcxk/core/utils/http/HttpClientPoolUtil.java

@@ -64,7 +64,7 @@ public class HttpClientPoolUtil {
      */
     private static  int MAX_CONN;
 
-    private static  int Max_PRE_ROUTE;
+    private static  int MAX_PRE_ROUTE;
 
     private static  int MAX_ROUTE;
 
@@ -104,7 +104,7 @@ public class HttpClientPoolUtil {
     @Value("${http.socket.timeout:3000}")
     public void setHttpMaxPoolSize(int poolSize){
         MAX_CONN = poolSize;
-        Max_PRE_ROUTE = poolSize;
+        MAX_PRE_ROUTE = poolSize;
         MAX_ROUTE = poolSize;
     }
 
@@ -126,10 +126,10 @@ public class HttpClientPoolUtil {
         RequestConfig requestConfig = RequestConfig.custom().setConnectionRequestTimeout(CONNECT_TIMEOUT)
                 .setConnectTimeout(CONNECT_TIMEOUT)
                 .setSocketTimeout(SOCKET_TIMEOUT).build();
-
         httpRequestBase.setConfig(requestConfig);
     }
 
+
     public static CloseableHttpClient getHttpClient(String url){
         String hostName = url.split("/")[2];
         int port = 80;
@@ -153,7 +153,6 @@ public class HttpClientPoolUtil {
                             manager.closeExpiredConnections();
                             //关闭5s空闲的连接
                             manager.closeIdleConnections(HTTP_IDEL_TIMEOUT, TimeUnit.MILLISECONDS);
-                            logger.info("close expired and idle for over 5s connection");
                         }
                     }, HTTP_MONITOR_INTERVAL, HTTP_MONITOR_INTERVAL, TimeUnit.MILLISECONDS);
                 }
@@ -178,7 +177,7 @@ public class HttpClientPoolUtil {
         // 设置连接参数// 最大连接数
         manager.setMaxTotal(MAX_CONN);
         // 路由最大连接数
-        manager.setDefaultMaxPerRoute(Max_PRE_ROUTE);
+        manager.setDefaultMaxPerRoute(MAX_PRE_ROUTE);
 
         HttpHost httpHost = new HttpHost(host, port);
         manager.setMaxPerRoute(new HttpRoute(httpHost), MAX_ROUTE);
@@ -424,6 +423,14 @@ public class HttpClientPoolUtil {
         return execute(url, httpGet);
     }
 
+    /**
+    * 执行请求
+    * @author Andy
+    * @date 11:02 2021/10/26
+    * @param url:
+    * @param httpUriRequest:
+    * @return java.lang.String
+    **/
     private static String execute(String url, HttpUriRequest httpUriRequest){
         CloseableHttpResponse response = null;
         InputStream in = null;

+ 1 - 2
zoniot-common/zoniot-iot-sync/src/main/java/com/zcxk/iot/sync/auth/AuthIotService.java

@@ -50,11 +50,10 @@ public class AuthIotService {
     * @return java.lang.String
     **/
     public String getToken(boolean skipCache){
-        String token;
         if (skipCache) {
             return this.getIotToken();
         }
-        token = this.getCacheToken();
+        String token = this.getCacheToken();
         if (StringUtils.isEmpty(token)) {
             token = this.getIotToken();
         }

+ 7 - 2
zoniot-common/zoniot-iot-sync/src/main/java/com/zcxk/iot/sync/utils/HttpUtil.java

@@ -7,6 +7,7 @@ import com.zcxk.core.utils.http.HttpClientPoolUtil;
 import com.zcxk.iot.sync.enums.SyncErrorEnum;
 import com.zcxk.iot.sync.vo.HttpContentListVo;
 import com.zcxk.iot.sync.vo.HttpContentVo;
+import org.springframework.util.CollectionUtils;
 
 import java.util.List;
 import java.util.Map;
@@ -14,7 +15,7 @@ import java.util.Map;
 /**
  * @author Andy
  * @version V1.0
- * @description: TODO
+ * @description: http处理
  * @date 2021/10/15
  **/
 public class HttpUtil {
@@ -124,7 +125,11 @@ public class HttpUtil {
         if (httpContentVo.getStatus() != 0 ) {
             throw BusinessException.builder(SyncErrorEnum.FAIL.getStatus(), "同步物联网出错:" + httpContentVo.getMsg());
         }
-        return JSON.parseArray(JSON.toJSONString(httpContentVo.getData()), clazz);
+        List<T> tList = httpContentVo.getData();
+        if (CollectionUtils.isEmpty(tList)){
+            return null;
+        }
+        return JSON.parseArray(JSON.toJSONString(tList), clazz);
     }
 
     /**

+ 1 - 1
zoniot-water/zoniot-water-api/src/main/java/com/zcxk/water/api/dto/AlarmTypeDTO.java

@@ -28,7 +28,7 @@ public class AlarmTypeDTO {
     @ApiModelProperty(value="物联网设备ID")
     private Long iotDeviceId;
 
-    @ApiModelProperty(value="场景类型SceneTypeEnum:1.水源 2.水厂 3.泵站 4.管网")
+    @ApiModelProperty(value="场景类型SceneTypeEnum:1.水源 2.水厂 3.泵站 4.管网 5.水原水厂")
     private Integer sceneType;
 
     @ApiModelProperty(value="名称")

+ 3 - 4
zoniot-water/zoniot-water-api/src/main/java/com/zcxk/water/api/dto/query/AlarmDetailsPageDto.java

@@ -5,6 +5,7 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import javax.validation.constraints.NotNull;
 import java.util.List;
 
 /**
@@ -27,11 +28,9 @@ public class AlarmDetailsPageDto extends BasePageDto {
     @ApiModelProperty(value = "处理状态")
     private Integer opState;
 
-    @ApiModelProperty(value = "所属场景id")
-    private  Integer sceneId;
-
+    @NotNull
     @ApiModelProperty(value = "场景类型名字")
-    private String sceneTypeName;
+    private List<String> sceneTypeName;
 
     @ApiModelProperty(value = "查询:开始时间")
     private String startTime;

+ 25 - 0
zoniot-water/zoniot-water-api/src/main/java/com/zcxk/water/api/dto/query/DeviceSceneDto.java

@@ -0,0 +1,25 @@
+package com.zcxk.water.api.dto.query;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+ * @author Andy
+ * @version V1.0
+ * @description: TODO
+ * @date 2021/8/16
+ **/
+@Data
+public class DeviceSceneDto  {
+
+    @ApiModelProperty(value = "设备类型/产品ID")
+    private Integer deviceTypeId;
+
+    @NotNull
+    @ApiModelProperty(value = "所属场景类型")
+    private List<Integer> sceneTypes;
+
+}

+ 22 - 0
zoniot-water/zoniot-water-api/src/main/java/com/zcxk/water/api/enums/SceneTypeEnum.java

@@ -1,6 +1,10 @@
 package com.zcxk.water.api.enums;
 
 import lombok.Getter;
+import org.springframework.util.CollectionUtils;
+
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * @author Andy
@@ -28,6 +32,11 @@ public enum SceneTypeEnum {
      * 管网
      */
     PIPE_NETWORK( 4,"管网"),
+
+    /**
+     * 水源水厂
+     */
+    WATER_SOURCE_OR_WORKS( 5,"水源水厂"),
     ;
 
 
@@ -43,4 +52,17 @@ public enum SceneTypeEnum {
         this.message = message;
     }
 
+    public static List<String> getTypeName(List<Integer> typeCodes){
+        if (CollectionUtils.isEmpty(typeCodes)){
+            return null;
+        }
+        List<String> list = new ArrayList<>();
+        for (SceneTypeEnum value : SceneTypeEnum.values()) {
+            if (typeCodes.contains(value.getCode())){
+                list.add(value.getMessage());
+            }
+        }
+        return list;
+    }
+
 }

+ 13 - 0
zoniot-water/zoniot-water-core/src/main/java/com/zcxk/water/core/dao/DeviceMapper.java

@@ -1,7 +1,9 @@
 package com.zcxk.water.core.dao;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.zcxk.core.common.pojo.UserCondition;
 import com.zcxk.water.api.dto.DeviceDto;
+import com.zcxk.water.api.dto.query.DeviceSceneDto;
 import com.zcxk.water.api.vo.DeviceVo;
 import com.zcxk.water.core.entity.DeviceEntity;
 import org.apache.ibatis.annotations.Mapper;
@@ -156,4 +158,15 @@ public interface DeviceMapper {
     **/
     Long findDeviceIdByIotDeviceId(Long iotDeviceId);
 
+    /**
+    * 根据场景类型查找设备
+    * @author Andy
+    * @date 16:21 2021/10/26
+    * @param deviceTypeId:
+    * @param sceneIds:
+    * @param userCondition:
+    * @return java.util.List<com.zcxk.water.api.vo.DeviceVo>
+    **/
+    List<DeviceVo> selectListBySceneType(@Param("deviceTypeId") Integer deviceTypeId, @Param("sceneIds") List<Long> sceneIds, @Param("user")UserCondition userCondition);
+
 }

+ 48 - 0
zoniot-water/zoniot-water-core/src/main/java/com/zcxk/water/core/mapper/DeviceMapper.xml

@@ -512,4 +512,52 @@
         select DEVICE_ID from sms_device where IOT_DEVICE_ID = #{deviceId}
     </update>
 
+
+    <select id="selectListBySceneType" resultType="com.zcxk.water.api.vo.DeviceVo">
+        select
+        distinct
+        <include refid="Base_Column_List"/>
+        from sms_device d
+        INNER JOIN sms_device_scene sd on d.id = sd.DEVICE_ID
+        INNER JOIN sms_device_type t on d.DEVICE_TYPE_ID = t.id
+        where d.status = 1 and sd.status = 1 and t.status = 1
+        <if test="deviceTypeId != null and deviceTypeId != 0 ">
+            and d.DEVICE_TYPE_ID =#{deviceTypeId}
+        </if>
+        <if test="sceneIds != null">
+            and sd.SCENE_ID in
+            <foreach collection="sceneIds" item="item" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
+        <if test="user.userType!=null and user.userType!=-999 and user.userType!=-9999 and  user.programItems != null and user.programItems.size() > 0">
+            <if test="user.permissionType == 5 or user.permissionType == 2">
+                and ( d.DEPT_ORG_ID in
+                <foreach collection="user.programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+                or
+                d.COMPANY_ORG_ID in
+                <foreach collection="user.programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+                )
+            </if>
+            <if test="user.permissionType == 4 or user.permissionType == 3">
+                and d.DEPT_ORG_ID in
+                <foreach collection="user.programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+            </if>
+            <if test="user.permissionType == 1">
+                and d.COMPANY_ORG_ID in
+                <foreach collection="user.programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+                and (d.DEPT_ORG_ID is null or d.DEPT_ORG_ID =0)
+            </if>
+        </if>
+
+    </select>
+
 </mapper>

+ 9 - 1
zoniot-water/zoniot-water-web/src/main/java/com/zcxk/water/web/component/SyncComponent.java

@@ -1,8 +1,10 @@
 package com.zcxk.water.web.component;
 
 import com.zcxk.water.web.service.SyncService;
+import com.zcxk.water.web.service.impl.SyncServiceService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.ApplicationContextAware;
 import org.springframework.stereotype.Component;
@@ -19,8 +21,14 @@ import java.util.Map;
 @Slf4j
 public class SyncComponent implements ApplicationContextAware {
 
+    /**
+     * 同步接口map封装
+     */
     private Map<String, SyncService> map;
 
+    @Autowired
+    private SyncServiceService syncServiceService;
+
     @Override
     public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
         // 根据接口类型返回相应的所有bean
@@ -33,7 +41,7 @@ public class SyncComponent implements ApplicationContextAware {
             syncService.sync();
             total++;
             if (total == map.size()) {
-                syncService.clean();
+                syncServiceService.clean();
             }
         }
     }

+ 0 - 2
zoniot-water/zoniot-water-web/src/main/java/com/zcxk/water/web/config/WaterApplicationRunner.java

@@ -2,8 +2,6 @@ package com.zcxk.water.web.config;
 
 import com.zcxk.iot.sync.service.SubscribeService;
 import com.zcxk.water.web.component.SyncComponent;
-import com.zcxk.water.web.service.impl.SyncAttributeService;
-import com.zcxk.water.web.service.impl.SyncServiceService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.ApplicationArguments;

+ 28 - 29
zoniot-water/zoniot-water-web/src/main/java/com/zcxk/water/web/controller/AlarmDetailsController.java

@@ -61,16 +61,25 @@ public class AlarmDetailsController {
         return AjaxMessage.success(alarmDetailsService.selectById(id));
     }
 
+    private List<Long> getSceneIds(List<String> sceneTypeNames) {
+        List<Long> sceneIds = new ArrayList<>();
+        for (String name : sceneTypeNames) {
+            List<Long> ids = sceneService.findByParentIdsSceneTypeName(null, name);
+            if (!CollectionUtils.isEmpty(ids)){
+                sceneIds.addAll(ids);
+            }
+        }
+        return sceneIds;
+    }
+
     @RequestMapping(value="selectPage" , method = RequestMethod.POST)
     @ApiOperation(value = "分页查询报警详情信息")
     public AjaxMessage selectPage(@RequestBody @Valid AlarmDetailsPageDto dto){
         AlarmDetailsDto alarmDetailsDto = coverAlarmDetailsDto(dto);
         IPage iPage = getPage(dto.getPageNum(), dto.getPageSize(), false, "t.date_create");
-        if (ZoniotIntegerUtils.isNotEmpty(dto.getSceneId()) || StringUtil.isNotEmpty(dto.getSceneTypeName())) {
-            alarmDetailsDto.setSceneIds(sceneService.findByParentIdsSceneTypeName(dto.getSceneId().longValue(), dto.getSceneTypeName()));
-            if (!CollectionUtils.isEmpty(alarmDetailsDto.getSceneIds())){
-                return AjaxMessage.success(new Pagination<>(alarmDetailsService.selectPage(iPage, alarmDetailsDto)));
-            }
+        alarmDetailsDto.setSceneIds(getSceneIds(dto.getSceneTypeName()));
+        if (!CollectionUtils.isEmpty(alarmDetailsDto.getSceneIds())){
+            return AjaxMessage.success(new Pagination<>(alarmDetailsService.selectPage(iPage, alarmDetailsDto)));
         }
         return AjaxMessage.success(new Pagination<>(iPage));
     }
@@ -110,11 +119,9 @@ public class AlarmDetailsController {
     public AjaxMessage selectHistoryPage(@RequestBody @Valid AlarmDetailsPageDto dto){
         AlarmDetailsDto alarmDetailsDto = coverAlarmDetailsDto(dto);
         IPage iPage = getPage(dto.getPageNum(), dto.getPageSize(), false, "a.ALARM_START_TIME");
-        if (ZoniotIntegerUtils.isNotEmpty(dto.getSceneId()) || StringUtil.isNotEmpty(dto.getSceneTypeName())) {
-            alarmDetailsDto.setSceneIds(sceneService.findByParentIdsSceneTypeName(dto.getSceneId().longValue(), dto.getSceneTypeName()));
-            if (CollectionUtils.isEmpty(alarmDetailsDto.getSceneIds())){
-                return AjaxMessage.success(new Pagination<>(iPage));
-            }
+        alarmDetailsDto.setSceneIds(getSceneIds(dto.getSceneTypeName()));
+        if (CollectionUtils.isEmpty(alarmDetailsDto.getSceneIds())){
+            return AjaxMessage.success(new Pagination<>(iPage));
         }
         Pagination<AlarmDetailsHistoryVo> pages = new Pagination<>(alarmDetailsService.selectHistoryPage(iPage, alarmDetailsDto));
         return AjaxMessage.success(pages);
@@ -128,12 +135,10 @@ public class AlarmDetailsController {
             return ;
         }
         AlarmDetailsDto alarmDetailsDto = coverAlarmDetailsDto(dto);
-        if (ZoniotIntegerUtils.isNotEmpty(dto.getSceneId()) || StringUtil.isNotEmpty(dto.getSceneTypeName())) {
-            alarmDetailsDto.setSceneIds(sceneService.findByParentIdsSceneTypeName(dto.getSceneId().longValue(), dto.getSceneTypeName()));
-            if (CollectionUtils.isEmpty(alarmDetailsDto.getSceneIds())){
-                EasyExcelUtil.excelWrite(response, AlarmDetailsHistoryDto.class, "历史报警记录", new ArrayList<>());
-                return ;
-            }
+        alarmDetailsDto.setSceneIds(getSceneIds(dto.getSceneTypeName()));
+        if (CollectionUtils.isEmpty(alarmDetailsDto.getSceneIds())){
+            EasyExcelUtil.excelWrite(response, AlarmDetailsHistoryDto.class, "历史报警记录", new ArrayList<>());
+            return ;
         }
         EasyExcelUtil.excelWrite(response, AlarmDetailsHistoryDto.class, "历史报警记录", alarmDetailsService.selectHistoryList(alarmDetailsDto));
     }
@@ -144,11 +149,9 @@ public class AlarmDetailsController {
     public AjaxMessage selectRealTimePage(@RequestBody @Valid AlarmDetailsPageDto dto ){
         AlarmDetailsDto alarmDetailsDto = coverAlarmDetailsDto(dto);
         IPage iPage = getPage(dto.getPageNum(), dto.getPageSize(), false, "a.ALARM_START_TIME");
-        if (ZoniotIntegerUtils.isNotEmpty(dto.getSceneId()) ||StringUtil.isNotEmpty(dto.getSceneTypeName())) {
-            alarmDetailsDto.setSceneIds(sceneService.findByParentIdsSceneTypeName(dto.getSceneId().longValue(), dto.getSceneTypeName()));
-            if (alarmDetailsDto.getSceneIds() == null || alarmDetailsDto.getSceneIds().size() == 0 ){
-                return AjaxMessage.success(new Pagination<>(iPage));
-            }
+        alarmDetailsDto.setSceneIds(getSceneIds(dto.getSceneTypeName()));
+        if (alarmDetailsDto.getSceneIds() == null || alarmDetailsDto.getSceneIds().size() == 0 ){
+            return AjaxMessage.success(new Pagination<>(iPage));
         }
         Pagination<AlarmDetailsRealTimeVo> pages = new Pagination<>(alarmDetailsService.selectRealTimePage(iPage,alarmDetailsDto));
         return AjaxMessage.success(pages);
@@ -162,13 +165,10 @@ public class AlarmDetailsController {
             return;
         }
         AlarmDetailsDto alarmDetailsDto = coverAlarmDetailsDto(dto);
-        if (ZoniotIntegerUtils.isNotEmpty(dto.getSceneId()) || StringUtil.isNotEmpty(dto.getSceneTypeName()))  {
-            List<Long> ids = sceneService.findByParentIdsSceneTypeName(dto.getSceneId().longValue(), dto.getSceneTypeName());
-            alarmDetailsDto.setSceneIds(ids);
-            if (CollectionUtils.isEmpty(ids)){
-                EasyExcelUtil.excelWrite(response, AlarmDetailsHistoryDto.class, "历史报警记录", new ArrayList<>());
-                return;
-            }
+        alarmDetailsDto.setSceneIds(getSceneIds(dto.getSceneTypeName()));
+        if (CollectionUtils.isEmpty(alarmDetailsDto.getSceneIds())){
+            EasyExcelUtil.excelWrite(response, AlarmDetailsHistoryDto.class, "历史报警记录", new ArrayList<>());
+            return;
         }
         EasyExcelUtil.excelWrite(response, AlarmDetailsRealTimeDto.class, "实时报警记录", alarmDetailsService.selectRealTimeList(alarmDetailsDto));
     }
@@ -192,7 +192,6 @@ public class AlarmDetailsController {
         alarmDetailsDto.setCondition(dto.getCondition());
         alarmDetailsDto.setAlarmType(dto.getAlarmType());
         alarmDetailsDto.setOpState(dto.getOpState());
-        alarmDetailsDto.setSceneTypeName(dto.getSceneTypeName());
         SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd");
         try {
             if(StringUtils.isNotBlank(dto.getStartTime())){

+ 7 - 0
zoniot-water/zoniot-water-web/src/main/java/com/zcxk/water/web/controller/DeviceController.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.zcxk.water.api.dto.DeviceAddUpdateDto;
 import com.zcxk.water.api.dto.query.DevicePageDto;
 import com.zcxk.water.api.dto.query.DeviceQueryDto;
+import com.zcxk.water.api.dto.query.DeviceSceneDto;
 import com.zcxk.water.api.vo.DeviceVo;
 import com.zcxk.water.web.common.Pagination;
 import com.zcxk.water.api.dto.DeviceDto;
@@ -79,6 +80,12 @@ public class DeviceController {
         return AjaxMessage.success(deviceService.selectListByType(deviceDto));
     }
 
+    @RequestMapping(value="selectListBySceneType" , method = RequestMethod.POST)
+    @ApiOperation(value = "查询设备信息")
+    public AjaxMessage selectListBySceneType(@RequestBody @Valid DeviceSceneDto dto){
+        return AjaxMessage.success(deviceService.selectListBySceneType(dto));
+    }
+
     @RequestMapping(value="selectListBySceneId" , method = RequestMethod.GET)
     @ApiOperation(value = "根据场景查询设备信息(场景设备联动)")
     public AjaxMessage selectListBySceneId( @ApiParam(value = "所属场景id") @RequestParam(required = false)  Integer sceneId){

+ 2 - 2
zoniot-water/zoniot-water-web/src/main/java/com/zcxk/water/web/controller/OnlineMonitorController.java

@@ -53,7 +53,7 @@ public class OnlineMonitorController extends BaseController{
     @RequestMapping(value="selectAlarmDetails" , method = RequestMethod.POST)
     @ApiOperation(value = "查询实时报警信息")
     public AjaxMessage selectAlarmDetails(@RequestBody @Valid OnlineMonitorDto dto){
-        AlarmDetailsDto alarmDetailsDto=new AlarmDetailsDto();
+        AlarmDetailsDto alarmDetailsDto = new AlarmDetailsDto();
         BeanCopyUtils.copyProperties(dto, alarmDetailsDto, AlarmDetailsDto.class);
         alarmDetailsDto.setSceneIds(sceneService.findByParentIdsLike(null));
         return AjaxMessage.success(onlineMonitorService.selectAlarmDetails(alarmDetailsDto));
@@ -66,7 +66,7 @@ public class OnlineMonitorController extends BaseController{
         alarmDetailsDto.setSceneTypeName(dto.getSceneTypeName());
         alarmDetailsDto.setSceneName(dto.getSceneName());
         alarmDetailsDto.setSceneIds(sceneService.findByParentIdsLike(null));
-        return AjaxMessage.success( onlineMonitorService.selectAlarmCount(alarmDetailsDto));
+        return AjaxMessage.success(onlineMonitorService.selectAlarmCount(alarmDetailsDto));
     }
 
     @RequestMapping(value="selectMapSuspension" , method = RequestMethod.GET)

+ 10 - 0
zoniot-water/zoniot-water-web/src/main/java/com/zcxk/water/web/service/DeviceService.java

@@ -3,6 +3,7 @@ package com.zcxk.water.web.service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.zcxk.water.api.dto.DeviceAddUpdateDto;
 import com.zcxk.water.api.dto.DeviceDto;
+import com.zcxk.water.api.dto.query.DeviceSceneDto;
 import com.zcxk.water.api.vo.DeviceVo;
 
 import java.util.List;
@@ -96,6 +97,15 @@ public interface DeviceService {
     **/
     List<DeviceVo> selectListByType(DeviceDto deviceDto);
 
+    /**
+    * 根据场景类型查找
+    * @author Andy
+    * @date 15:48 2021/10/26
+    * @param dto:
+    * @return java.util.List<com.zcxk.water.api.vo.DeviceVo>
+    **/
+    List<DeviceVo> selectListBySceneType(DeviceSceneDto dto);
+
     /**
     * 根据场景查找
     * @author Andy

+ 0 - 1
zoniot-water/zoniot-water-web/src/main/java/com/zcxk/water/web/service/SyncService.java

@@ -17,5 +17,4 @@ public interface SyncService {
     **/
     void sync();
 
-    void clean();
 }

+ 1 - 4
zoniot-water/zoniot-water-web/src/main/java/com/zcxk/water/web/service/impl/AbstractProductSyncService.java

@@ -64,7 +64,6 @@ public abstract class AbstractProductSyncService implements SyncService {
      * @param :
      * @return void
      **/
-    @Override
     public void clean(){
         detailVoList.clear();
     }
@@ -107,7 +106,7 @@ public abstract class AbstractProductSyncService implements SyncService {
             if (StringUtil.isNotEmpty(productId)){
                 continue;
             }
-            entities.add(convertDeviceTypeEntity(productVo));
+            entities.add(this.convertDeviceTypeEntity(productVo));
         }
         if (CollectionUtils.isEmpty(entities)){
             return;
@@ -149,8 +148,6 @@ public abstract class AbstractProductSyncService implements SyncService {
         }
     }
 
-
-
     /**
     * 同步产品下面的其他属性
     * @author Andy

+ 30 - 0
zoniot-water/zoniot-water-web/src/main/java/com/zcxk/water/web/service/impl/DeviceServiceImpl.java

@@ -10,15 +10,19 @@ import com.zcxk.iot.sync.dto.DeviceDTO;
 import com.zcxk.iot.sync.service.SyncDeviceService;
 import com.zcxk.water.api.dto.DeviceAddUpdateDto;
 import com.zcxk.water.api.dto.DeviceDto;
+import com.zcxk.water.api.dto.query.DeviceSceneDto;
 import com.zcxk.water.api.enums.DeviceStatusEnum;
+import com.zcxk.water.api.enums.SceneTypeEnum;
 import com.zcxk.water.api.vo.DeviceVo;
 import com.zcxk.water.core.dao.DeviceMapper;
 import com.zcxk.water.core.entity.DeviceEntity;
 import com.zcxk.water.core.entity.DeviceTypeEntity;
+import com.zcxk.water.core.entity.SceneTypeEntity;
 import com.zcxk.water.web.service.DeviceService;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
 import java.util.*;
@@ -183,6 +187,32 @@ public class DeviceServiceImpl implements DeviceService {
 
     }
 
+    @Autowired
+    private SceneTypeService sceneTypeService;
+
+    @Override
+    public List<DeviceVo> selectListBySceneType(DeviceSceneDto dto) {
+        List<String> typeNames = SceneTypeEnum.getTypeName(dto.getSceneTypes());
+        List<SceneTypeEntity> typeEntityList = sceneTypeService.findList(typeNames);
+        List<Long> sceneIds = new ArrayList<>();
+        for (SceneTypeEntity sceneTypeEntity : typeEntityList) {
+            sceneIds.add(sceneTypeEntity.getId());
+            setSceneId(sceneTypeEntity.getChildren(), sceneIds);
+        }
+        return deviceMapper.selectListBySceneType(dto.getDeviceTypeId(), sceneIds, UserUtil.getCurrentUser().getUserCondition());
+    }
+
+
+    private void setSceneId(List<SceneTypeEntity> childList, List<Long> sceneIds){
+        if (CollectionUtils.isEmpty(childList)){
+            return;
+        }
+        for (SceneTypeEntity sceneTypeEntity : childList) {
+            sceneIds.add(sceneTypeEntity.getId());
+            setSceneId(sceneTypeEntity.getChildren(), sceneIds);
+        }
+    }
+
     @Override
     public List<DeviceVo> selectListByScene(DeviceDto deviceDto) {
         LoginUser loginUser = UserUtil.getCurrentUser();

+ 27 - 0
zoniot-water/zoniot-water-web/src/main/java/com/zcxk/water/web/service/impl/SceneTypeService.java

@@ -9,8 +9,10 @@ import com.zcxk.water.core.entity.SceneTypeEntity;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
@@ -48,6 +50,31 @@ public class SceneTypeService extends ServiceImpl<SceneTypeMapper, SceneTypeEnti
         return sceneTypeTree;
     }
 
+    /**
+    * 查找场景
+    * @author Andy
+    * @date 15:43 2021/10/26
+    * @param typeNames:
+    * @return java.util.List<com.zcxk.water.core.entity.SceneTypeEntity>
+    **/
+    public List<SceneTypeEntity> findList(List<String> typeNames) {
+        SceneTypeEntity sceneTypeEntity = new SceneTypeEntity();
+        sceneTypeEntity.setTenantId(UserUtil.getCurrentUser().getTenantId());
+
+        List<SceneTypeEntity> sceneTypeEntities = sceneTypeMapper.findList(sceneTypeEntity);
+        List<SceneTypeEntity> sceneTypeTree = getSceneTypeTree(sceneTypeEntities, Long.valueOf(0), 1);
+        if (CollectionUtils.isEmpty(typeNames) || CollectionUtils.isEmpty(sceneTypeTree)){
+            return sceneTypeTree;
+        }
+        List<SceneTypeEntity> result = new ArrayList<>();
+        for (SceneTypeEntity typeEntity : sceneTypeTree) {
+             if (typeNames.contains(typeEntity.getSceneTypeName())){
+                 result.add(typeEntity);
+             }
+        }
+        return result;
+    }
+
     /**
      * 查列表
      */