Browse Source

'优化设备关联设施信息查询接口和定时任务服务间接口调用'

james 1 year ago
parent
commit
aac685eab2

+ 2 - 4
service-backend/service-backend-api/src/main/java/com/usky/backend/client/DataQueryClient.java

@@ -5,15 +5,13 @@ import com.usky.backend.domain.request.LastQueryVo;
 import com.usky.backend.domain.response.LastResultVo;
 import com.usky.common.core.bean.ApiResult;
 import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
 @FeignClient(contextId = "dataQueryClient", value = "usky-backend")
 public interface DataQueryClient {
 
-    @GetMapping("/status")
+    @RequestMapping(value = "status")
     List<StatusVO> status();
 }

+ 5 - 13
service-backend/service-backend-api/src/main/java/com/usky/backend/domain/StatusVO.java

@@ -1,7 +1,10 @@
 package com.usky.backend.domain;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
 import lombok.experimental.Accessors;
 import org.apache.tomcat.jni.Local;
 
@@ -10,23 +13,12 @@ import java.time.LocalDateTime;
 
 @Data
 @EqualsAndHashCode(callSuper = false)
-@Accessors(chain = true)
 public class StatusVO implements Serializable {
+
     private static final long serialVersionUID = 1L;
 
-    /**
-     * 设备Id
-     */
     private String  deviceId;
 
-    /**
-     * 设备数据时间
-     */
-    private String time;
-
-    public StatusVO(String deviceId, String time){
-        this.deviceId = deviceId;
-        this.time = time;
-    }
+    private LocalDateTime time;
 
 }

+ 2 - 1
service-backend/service-backend-biz/src/main/java/com/usky/backend/controller/DataQueryController.java

@@ -70,7 +70,8 @@ public class DataQueryController {
      * 查询设备状态
      * @return
      */
-    @GetMapping("/status")
+    @GetMapping("status")
+    @ApiOperation(value = "查询设备状态",response = List.class)
     public ApiResult<List<StatusVO>> status(){
         return ApiResult.success(dataQueryService.status());
     }

+ 4 - 1
service-backend/service-backend-biz/src/main/java/com/usky/backend/service/impl/DataQueryServiceImpl.java

@@ -18,6 +18,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -262,7 +263,9 @@ public class DataQueryServiceImpl implements DataQueryService {
         List<Map<String,Object>> maps = dataRealTimeService.listMaps(query);
         if(maps.size()>0) {
             for (int i = 0; i < maps.size(); i++) {
-                StatusVO statusVO = new StatusVO(maps.get(i).get("deviceId").toString(),maps.get(i).get("maxTime").toString());
+                StatusVO statusVO = new StatusVO();
+                statusVO.setDeviceId(maps.get(i).get("deviceId").toString());
+                statusVO.setTime(LocalDateTime.parse(maps.get(i).get("maxTime").toString(),DateTimeFormatter.ISO_DATE_TIME));
                 list.add(statusVO);
             }
         }

+ 2 - 2
service-backend/service-backend-biz/src/main/resources/bootstrap.yml

@@ -14,10 +14,10 @@ spring:
     nacos:
       discovery:
         # 服务注册地址
-        server-addr: usky-cloud-nacos:8848
+        server-addr: 172.16.120.165:8848
       config:
         # 配置中心地址
-        server-addr: usky-cloud-nacos:8848
+        server-addr: 172.16.120.165:8848
         # 配置文件格式
         file-extension: yml
         # 共享配置

+ 4 - 0
service-iot/service-iot-biz/pom.xml

@@ -32,6 +32,10 @@
         </dependency>
 
         <!-- excel工具 -->
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-openfeign</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.apache.poi</groupId>
             <artifactId>poi-ooxml</artifactId>

+ 3 - 2
service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/BaseGgpFacilityController.java

@@ -75,9 +75,10 @@ public class BaseGgpFacilityController {
      * @return
      */
     @GetMapping("/facilityDeviceList")
-    public ApiResult<List<BaseFacilityDeviceVO>> facilityDeviceList(@RequestParam(value = "deviceId") String deviceId)
+    public ApiResult<List<BaseFacilityDeviceVO>> facilityDeviceList(@RequestParam(value = "deviceId") String deviceId,
+                                                                    @RequestParam(value = "facilityId",required = false) Integer facilityId)
     {
-        return ApiResult.success(baseGgpFacilityService.facilityDeviceList(deviceId));
+        return ApiResult.success(baseGgpFacilityService.facilityDeviceList(deviceId,facilityId));
     }
 
     /**

+ 9 - 30
service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/DeviceHttpController.java

@@ -3,8 +3,6 @@ package com.usky.iot.controller.web;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-//import com.usky.backend.client.DataQueryClient;
-//import com.usky.backend.domain.StatusVO;
 import com.usky.common.core.bean.ApiResult;
 import com.usky.iot.domain.DmpDeviceStatus;
 import com.usky.iot.service.DmpDeviceStatusService;
@@ -22,34 +20,15 @@ import java.util.List;
 @RestController
 @RequestMapping("/deviceHttp")
 public class DeviceHttpController {
-//    @Autowired
-//    private DataQueryClient dataQueryClient;
-//
-//    @Autowired
-//    private DmpDeviceStatusService dmpDeviceStatusService;
-//
-//    @GetMapping("/status")
-//    public ApiResult<Void> status(){
-//         List<StatusVO> list = dataQueryClient.status();
-//         if(CollectionUtils.isNotEmpty(list)){
-//             for(int i=0;i<list.size();i++){
-//                 String date = list.get(i).getTime().substring(1,10);
-//                 String currentDate = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
-//                 LambdaUpdateWrapper<DmpDeviceStatus> updateWrapper = Wrappers.lambdaUpdate();
-//                 if(date.equals(currentDate)){
-//                     updateWrapper.set(DmpDeviceStatus::getDeviceStatus,1)
-//                             .set(DmpDeviceStatus::getLastOnlineTime,LocalDateTime.parse(list.get(i).getTime(),DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")))
-//                             .eq(DmpDeviceStatus::getDeviceId,list.get(i).getDeviceId());
-//                 }else{
-//                     updateWrapper.set(DmpDeviceStatus::getDeviceStatus,2)
-//                             .set(DmpDeviceStatus::getLastOfflineTime,LocalDateTime.parse(list.get(i).getTime(),DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")))
-//                             .eq(DmpDeviceStatus::getDeviceId,list.get(i).getDeviceId());
-//                 }
-//                 dmpDeviceStatusService.update(updateWrapper);
-//             }
-//         }
-//         return ApiResult.success();
-//    }
+
+    @Autowired
+    private DmpDeviceStatusService dmpDeviceStatusService;
+
+    @PutMapping("/status")
+    public ApiResult<Void> status(){
+        dmpDeviceStatusService.status();
+        return ApiResult.success();
+    }
 
 
 }

+ 8 - 3
service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/TaskController.java

@@ -1,5 +1,6 @@
 package com.usky.iot.controller.web;
 
+import com.usky.iot.service.DmpDeviceStatusService;
 import com.usky.iot.service.job.DmpDataOverviewJob;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.EnableScheduling;
@@ -16,14 +17,18 @@ public class TaskController {
     @Autowired
     private DmpDataOverviewJob dmpDataOverviewJob;
 
-//    @Autowired
-//    private DeviceHttpController deviceHttpController;
+    @Autowired
+    private DmpDeviceStatusService dmpDeviceStatusService;
 
     @Scheduled(cron = "0 0 1 * * ? ") //每天凌晨1点执行
     public void task() {
         System.out.println(Thread.currentThread().getName() + "定时任务执行中");
         dmpDataOverviewJob.execute();
-//        deviceHttpController.status();
     }
+//    @Scheduled(cron = "0 0/1 * * * ? ") //每天凌晨1点执行
+//    public void task1() {
+//        System.out.println(Thread.currentThread().getName() + "定时任务执行中");
+//        dmpDeviceStatusService.status();
+//    }
 
 }

+ 1 - 1
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/BaseGgpFacilityService.java

@@ -27,7 +27,7 @@ public interface BaseGgpFacilityService extends CrudService<BaseGgpFacility> {
 
     CommonPage<BaseGgpFacility> page(BaseGgpFacilityRequest baseGgpFacilityRequest);
 
-    List<BaseFacilityDeviceVO> facilityDeviceList(String deviceId);
+    List<BaseFacilityDeviceVO> facilityDeviceList(String deviceId,Integer facilityId);
 
     boolean remove(Integer id);
 

+ 2 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/DmpDeviceStatusService.java

@@ -20,4 +20,6 @@ public interface DmpDeviceStatusService extends CrudService<DmpDeviceStatus> {
 
     List<Map<String,Object>> getCollectByProduct(List<Integer> productIds);
 
+    void status();
+
 }

+ 3 - 2
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/BaseGgpFacilityServiceImpl.java

@@ -81,10 +81,11 @@ public class BaseGgpFacilityServiceImpl extends AbstractCrudService<BaseGgpFacil
     }
 
     @Override
-    public List<BaseFacilityDeviceVO> facilityDeviceList(String deviceId){
+    public List<BaseFacilityDeviceVO> facilityDeviceList(String deviceId,Integer facilityId){
         List<BaseFacilityDeviceVO> list = new ArrayList<>();
         LambdaQueryWrapper<BaseFacilityDevice> queryWrapper = Wrappers.lambdaQuery();
-        queryWrapper.eq(BaseFacilityDevice::getDeviceId,deviceId);
+        queryWrapper.eq(BaseFacilityDevice::getDeviceId,deviceId)
+                    .like(null != facilityId,BaseFacilityDevice::getFacilityId,facilityId);
         List<BaseFacilityDevice> list1 = baseFacilityDeviceService.list(queryWrapper);
         if(CollectionUtils.isNotEmpty(list1)){
             List<Integer> facilityIds = new ArrayList<>();

+ 34 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/DmpDeviceStatusServiceImpl.java

@@ -2,13 +2,21 @@ package com.usky.iot.service.impl;
 
 import cn.hutool.core.collection.CollectionUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.usky.backend.client.DataQueryClient;
+import com.usky.backend.domain.StatusVO;
 import com.usky.common.mybatis.core.AbstractCrudService;
 import com.usky.iot.domain.DmpDeviceStatus;
 import com.usky.iot.mapper.DmpDeviceStatusMapper;
 import com.usky.iot.service.DmpDeviceStatusService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.web.bind.annotation.RequestMapping;
 
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.List;
 import java.util.Map;
 
@@ -23,6 +31,10 @@ import java.util.Map;
 @Service
 public class DmpDeviceStatusServiceImpl extends AbstractCrudService<DmpDeviceStatusMapper, DmpDeviceStatus> implements DmpDeviceStatusService {
 
+
+    @Autowired
+    private DataQueryClient dataQueryClient;
+
     @Override
     public List<Map<String, Object>> getCollectByProduct(List<Integer> productIds) {
         QueryWrapper<DmpDeviceStatus> query = Wrappers.query();
@@ -31,4 +43,26 @@ public class DmpDeviceStatusServiceImpl extends AbstractCrudService<DmpDeviceSta
                 .groupBy("product_id");
         return this.listMaps(query);
     }
+
+    @Override
+    public void status(){
+        List<StatusVO> list = dataQueryClient.status();
+        if(CollectionUtils.isNotEmpty(list)){
+            for(int i=0;i<list.size();i++){
+                String date =  list.get(i).getTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+                String currentDate = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+                LambdaUpdateWrapper<DmpDeviceStatus> updateWrapper = Wrappers.lambdaUpdate();
+                if(date.equals(currentDate)){
+                    updateWrapper.set(DmpDeviceStatus::getDeviceStatus,1)
+                            .set(DmpDeviceStatus::getLastOnlineTime,list.get(i).getTime())
+                            .eq(DmpDeviceStatus::getDeviceId,list.get(i).getDeviceId());
+                }else{
+                    updateWrapper.set(DmpDeviceStatus::getDeviceStatus,2)
+                            .set(DmpDeviceStatus::getLastOfflineTime,list.get(i).getTime())
+                            .eq(DmpDeviceStatus::getDeviceId,list.get(i).getDeviceId());
+                }
+                this.update(updateWrapper);
+            }
+        }
+    }
 }