Ver Fonte

Merge branch 'fu-dev' of uskycloud/usky-modules into server-165

hanzhengyi há 1 ano atrás
pai
commit
e4510c4c23
14 ficheiros alterados com 330 adições e 22 exclusões
  1. 31 0
      service-issue/service-issue-biz/src/main/java/com/usky/issue/controller/web/SpProjectConfigController.java
  2. 14 1
      service-issue/service-issue-biz/src/main/java/com/usky/issue/controller/web/YtDeviceStatusController.java
  3. 42 0
      service-issue/service-issue-biz/src/main/java/com/usky/issue/domain/SpProjectConfig.java
  4. 2 2
      service-issue/service-issue-biz/src/main/java/com/usky/issue/domain/YtDeviceStatus.java
  5. 20 0
      service-issue/service-issue-biz/src/main/java/com/usky/issue/mapper/SpProjectConfigMapper.java
  6. 18 3
      service-issue/service-issue-biz/src/main/java/com/usky/issue/mapper/YtDeviceStatusMapper.java
  7. 19 0
      service-issue/service-issue-biz/src/main/java/com/usky/issue/service/SpProjectConfigService.java
  8. 8 0
      service-issue/service-issue-biz/src/main/java/com/usky/issue/service/YtDeviceStatusService.java
  9. 29 0
      service-issue/service-issue-biz/src/main/java/com/usky/issue/service/impl/SpProjectConfigServiceImpl.java
  10. 62 3
      service-issue/service-issue-biz/src/main/java/com/usky/issue/service/impl/YtDeviceStatusServiceImpl.java
  11. 19 0
      service-issue/service-issue-biz/src/main/java/com/usky/issue/service/vo/SpProjectConfigRequestVO.java
  12. 7 0
      service-issue/service-issue-biz/src/main/java/com/usky/issue/service/vo/YtDeviceStatusRequestVO.java
  13. 23 0
      service-issue/service-issue-biz/src/main/resources/mapper/issue/SpProjectConfigMapper.xml
  14. 36 13
      service-issue/service-issue-biz/src/main/resources/mapper/issue/YtDeviceStatusMapper.xml

+ 31 - 0
service-issue/service-issue-biz/src/main/java/com/usky/issue/controller/web/SpProjectConfigController.java

@@ -0,0 +1,31 @@
+package com.usky.issue.controller.web;
+
+
+import com.usky.common.core.bean.ApiResult;
+import com.usky.issue.service.SpProjectConfigService;
+import com.usky.issue.service.vo.SpProjectConfigRequestVO;
+import org.springframework.beans.factory.annotation.Autowired;
+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;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author fu
+ * @since 2023-12-11
+ */
+@RestController
+@RequestMapping("/spProjectConfig")
+public class SpProjectConfigController {
+    @Autowired
+    SpProjectConfigService spProjectConfigService;
+    @PostMapping("/getCompanyCode")
+    ApiResult<String> getCompanyCode(@RequestBody SpProjectConfigRequestVO requestVO) {
+        return ApiResult.success(spProjectConfigService.getCompanyCode(requestVO));
+    }
+
+}

+ 14 - 1
service-issue/service-issue-biz/src/main/java/com/usky/issue/controller/web/YtDeviceStatusController.java

@@ -3,6 +3,7 @@ package com.usky.issue.controller.web;
 
 import com.usky.common.core.bean.ApiResult;
 import com.usky.common.core.bean.CommonPage;
+import com.usky.issue.annotation.CheckSign;
 import com.usky.issue.domain.YtDeviceStatus;
 import com.usky.issue.service.YtDeviceStatusService;
 import com.usky.issue.service.vo.YtDeviceStatusRequestVO;
@@ -10,6 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -26,10 +28,11 @@ public class YtDeviceStatusController {
     private YtDeviceStatusService ytDeviceStatusService;
 
     /**
-     * 分页
+     * 离线设备查询
      * @param requestVO
      * @return
      */
+    //CheckSign
     @PostMapping("page")
     ApiResult<CommonPage<YtDeviceStatus>> page(@RequestBody YtDeviceStatusRequestVO requestVO){
         return ApiResult.success(ytDeviceStatusService.page(requestVO));
@@ -45,5 +48,15 @@ public class YtDeviceStatusController {
         return ApiResult.success(ytDeviceStatusService.export());
     }
 
+    /**
+     * 查询对应单位对应类型设备
+     * @param
+     * @return
+     */
+    @PostMapping("deviceList")
+    ApiResult <List<Map<String, Object>>> deviceList(@RequestBody YtDeviceStatusRequestVO requestVO){
+        return ApiResult.success(ytDeviceStatusService.deviceList(requestVO));
+    }
+
 }
 

+ 42 - 0
service-issue/service-issue-biz/src/main/java/com/usky/issue/domain/SpProjectConfig.java

@@ -0,0 +1,42 @@
+package com.usky.issue.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author fu
+ * @since 2023-12-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class SpProjectConfig implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 项目名称
+     */
+    private String projectName;
+
+    /**
+     * appKey
+     */
+    private String appKey;
+
+    /**
+     * 项目对应单位编号
+     */
+    private String companyCode;
+
+
+}

+ 2 - 2
service-issue/service-issue-biz/src/main/java/com/usky/issue/domain/YtDeviceStatus.java

@@ -2,6 +2,8 @@ package com.usky.issue.domain;
 
 import java.time.LocalDateTime;
 import java.io.Serializable;
+import java.util.List;
+
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -68,6 +70,4 @@ public class YtDeviceStatus implements Serializable {
      * 时间差值(小时)
      */
     private Long difference;
-
-
 }

+ 20 - 0
service-issue/service-issue-biz/src/main/java/com/usky/issue/mapper/SpProjectConfigMapper.java

@@ -0,0 +1,20 @@
+package com.usky.issue.mapper;
+
+import com.usky.issue.domain.SpProjectConfig;
+import com.usky.common.mybatis.core.CrudMapper;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author fu
+ * @since 2023-12-11
+ */
+@Repository
+public interface SpProjectConfigMapper extends CrudMapper<SpProjectConfig> {
+    String getCompanyCode(@Param("appKey") String appKey);
+}
+

+ 18 - 3
service-issue/service-issue-biz/src/main/java/com/usky/issue/mapper/YtDeviceStatusMapper.java

@@ -2,10 +2,12 @@ package com.usky.issue.mapper;
 
 import com.usky.issue.domain.YtDeviceStatus;
 import com.usky.common.mybatis.core.CrudMapper;
-import feign.Param;
+import org.apache.ibatis.annotations.MapKey;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -17,8 +19,21 @@ import java.util.List;
  */
 @Repository
 public interface YtDeviceStatusMapper extends CrudMapper<YtDeviceStatus> {
+    /*
+    deviceType 设备类型
+    current 第几页
+    size 页大小
+     */
     List<YtDeviceStatus> getDeviceStatusType(@Param("deviceType") String deviceType,
-                                             @Param("Current") int Current,
-                                             @Param("Size") int Size);
+                                             @Param("current") int current,
+                                             @Param("size") int size);
+
     List<YtDeviceStatus> exportData();
+
+    /*
+    companyCode 单位编号
+     */
+    @MapKey("company_code")
+    List<Map<String, Object>> deviceList(@Param("companyCode") String companyCode);
+
 }

+ 19 - 0
service-issue/service-issue-biz/src/main/java/com/usky/issue/service/SpProjectConfigService.java

@@ -0,0 +1,19 @@
+package com.usky.issue.service;
+
+import com.usky.issue.domain.SpProjectConfig;
+import com.usky.common.mybatis.core.CrudService;
+import com.usky.issue.service.vo.SpProjectConfigRequestVO;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author fu
+ * @since 2023-12-11
+ */
+public interface SpProjectConfigService extends CrudService<SpProjectConfig> {
+    String getCompanyCode(SpProjectConfigRequestVO requestVO);
+}
+

+ 8 - 0
service-issue/service-issue-biz/src/main/java/com/usky/issue/service/YtDeviceStatusService.java

@@ -6,6 +6,7 @@ import com.usky.common.mybatis.core.CrudService;
 import com.usky.issue.service.vo.YtDeviceStatusRequestVO;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -16,6 +17,13 @@ import java.util.List;
  * @since 2023-11-23
  */
 public interface YtDeviceStatusService extends CrudService<YtDeviceStatus> {
+
+    //离线设备分页查询
     CommonPage<YtDeviceStatus> page(YtDeviceStatusRequestVO requestVO);
+
+    //离线设备数据导出
     List<YtDeviceStatus> export();
+
+    //根据单位编号查询离线设备
+    List<Map<String, Object>> deviceList(YtDeviceStatusRequestVO requestVO);
 }

+ 29 - 0
service-issue/service-issue-biz/src/main/java/com/usky/issue/service/impl/SpProjectConfigServiceImpl.java

@@ -0,0 +1,29 @@
+package com.usky.issue.service.impl;
+
+import com.usky.issue.domain.SpProjectConfig;
+import com.usky.issue.mapper.SpProjectConfigMapper;
+import com.usky.issue.service.SpProjectConfigService;
+import com.usky.common.mybatis.core.AbstractCrudService;
+import com.usky.issue.service.vo.SpProjectConfigRequestVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author fu
+ * @since 2023-12-11
+ */
+@Service
+public class SpProjectConfigServiceImpl extends AbstractCrudService<SpProjectConfigMapper, SpProjectConfig> implements SpProjectConfigService {
+    @Autowired
+    SpProjectConfigMapper spProjectConfigMapper;
+    @Override
+    public String getCompanyCode(SpProjectConfigRequestVO RequestVO) {
+        String appKey = RequestVO.getAppKey();
+        String companyCode = spProjectConfigMapper.getCompanyCode(appKey);
+        return companyCode;
+    }
+}

+ 62 - 3
service-issue/service-issue-biz/src/main/java/com/usky/issue/service/impl/YtDeviceStatusServiceImpl.java

@@ -2,6 +2,7 @@ package com.usky.issue.service.impl;
 
 
 import com.usky.common.core.bean.CommonPage;
+import com.usky.common.core.exception.BusinessException;
 import com.usky.issue.domain.YtDeviceStatus;
 import com.usky.issue.mapper.YtDeviceStatusMapper;
 import com.usky.issue.service.YtDeviceStatusService;
@@ -10,7 +11,8 @@ import com.usky.issue.service.vo.YtDeviceStatusRequestVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.List;
+import java.math.BigDecimal;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -23,7 +25,6 @@ import java.util.stream.Collectors;
  */
 @Service
 public class YtDeviceStatusServiceImpl extends AbstractCrudService<YtDeviceStatusMapper, YtDeviceStatus> implements YtDeviceStatusService {
-
     @Autowired
     private YtDeviceStatusMapper ytDeviceStatusMapper;
 
@@ -58,9 +59,67 @@ public class YtDeviceStatusServiceImpl extends AbstractCrudService<YtDeviceStatu
         return new CommonPage<>(records, total, pageSize, pageCurrent);
     }
 
+    /*
+    导出离线数据查询结果
+     */
     @Override
     public List<YtDeviceStatus> export() {
         return ytDeviceStatusMapper.exportData();
     }
 
-}
+    /*
+    根据传入单位编号查询所有设备信息
+    */
+    @Override
+    public List<Map<String, Object>> deviceList(YtDeviceStatusRequestVO requestVO) {
+        String companyCode = requestVO.getCompanyCode();
+        // 查询各类型设备的总数以及在线、离线设备数量
+        List<Map<String, Object>> statusCounts = ytDeviceStatusMapper.deviceList(companyCode);
+        Map<String, Map<String, Integer>> statusMap = new HashMap<>();
+        for (Map<String, Object> statusCount : statusCounts) {
+            String deviceType = (String) statusCount.get("deviceType");
+            Integer onlineCount = ((Number) statusCount.get("onlineCount")).intValue();
+            Integer offlineCount = ((Number) statusCount.get("offlineCount")).intValue();
+            statusMap.computeIfAbsent(deviceType, k -> new HashMap<>())
+                    .put("onlineCount", onlineCount);
+            statusMap.computeIfAbsent(deviceType, k -> new HashMap<>())
+                    .put("offlineCount", offlineCount);
+            int totalCount = ((Number) statusCount.get("deviceTypeCounts")).intValue();
+            statusMap.computeIfAbsent(deviceType, k -> new HashMap<>()).put("deviceTypeCounts", totalCount);
+        }
+        // 统计设备总数和在线、离线设备数
+        Map<String, Integer> deviceTypeCounts = new HashMap<>();
+        Map<String, Integer> onlineDeviceCount = new HashMap<>();
+        Map<String, Integer> offlineDeviceCount = new HashMap<>();
+
+        // 设置设备状态并统计设备数量
+        List<Map<String, Object>> deviceList = ytDeviceStatusMapper.deviceList(companyCode);
+        for (Map<String, Object> device : deviceList) {
+            String deviceType = (String) device.get("deviceType");
+            deviceTypeCounts.merge(deviceType, (Integer) statusMap.getOrDefault(deviceType, Collections.emptyMap()).getOrDefault("deviceTypeCounts", 0), Integer::sum);
+
+            Integer onlineCount = statusMap.getOrDefault(deviceType, Collections.emptyMap())
+                    .getOrDefault("onlineCount", 0);
+            Integer offlineCount = statusMap.getOrDefault(deviceType, Collections.emptyMap())
+                    .getOrDefault("offlineCount", 0);
+            Integer currentOnlineCount = onlineDeviceCount.getOrDefault(deviceType, 0);
+            Integer currentOfflineCount = offlineDeviceCount.getOrDefault(deviceType, 0);
+            onlineDeviceCount.put(deviceType, currentOnlineCount + onlineCount);
+            offlineDeviceCount.put(deviceType, currentOfflineCount + offlineCount);
+        }
+
+        // 添加设备类型、设备总数和在线、离线设备数到结果列表
+        List<Map<String, Object>> deviceStatusList = new ArrayList<>();
+        for (String deviceType : deviceTypeCounts.keySet()) {
+            Map<String, Object> deviceInfo = new HashMap<>();
+            deviceInfo.put("deviceType", deviceType);
+            deviceInfo.put("deviceTypeCounts", deviceTypeCounts.getOrDefault(deviceType, 0));
+            deviceInfo.put("onlineDeviceCount", onlineDeviceCount.getOrDefault(deviceType, 0));
+            deviceInfo.put("offlineDeviceCount", offlineDeviceCount.getOrDefault(deviceType, 0));
+            deviceStatusList.add(deviceInfo);
+        }
+
+        return deviceStatusList;
+    }
+
+}

+ 19 - 0
service-issue/service-issue-biz/src/main/java/com/usky/issue/service/vo/SpProjectConfigRequestVO.java

@@ -0,0 +1,19 @@
+package com.usky.issue.service.vo;
+
+import lombok.Data;
+
+/**
+ * @description:TODO
+ * @author: fu
+ * @create: 2023/11/23 15:58
+ */
+@Data
+public class SpProjectConfigRequestVO {
+
+    /**
+     * appKey
+     */
+    private String appKey;
+
+}
+

+ 7 - 0
service-issue/service-issue-biz/src/main/java/com/usky/issue/service/vo/YtDeviceStatusRequestVO.java

@@ -2,6 +2,8 @@ package com.usky.issue.service.vo;
 
 import lombok.Data;
 
+import java.util.List;
+
 /**
  * @description:TODO
  * @author: fu
@@ -25,5 +27,10 @@ public class YtDeviceStatusRequestVO {
      */
     private String deviceType;
 
+    /**
+     * 单位编号
+     */
+    private String companyCode;
+
 }
 

+ 23 - 0
service-issue/service-issue-biz/src/main/resources/mapper/issue/SpProjectConfigMapper.xml

@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.usky.issue.mapper.SpProjectConfigMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.usky.issue.domain.SpProjectConfig">
+        <id column="id" property="id" />
+        <result column="project_name" property="projectName" />
+        <result column="app_key" property="appKey" />
+        <result column="company_code" property="companyCode" />
+    </resultMap>
+    <!--根据传入appKey查询company_code-->
+    <select id="getCompanyCode" resultType="java.lang.String">
+        select company_code
+        from sp_project_config
+        <where>
+            <if test="appKey != null">
+                and app_key = #{appKey}
+            </if>
+        </where>
+    </select>
+
+</mapper>

+ 36 - 13
service-issue/service-issue-biz/src/main/resources/mapper/issue/YtDeviceStatusMapper.xml

@@ -5,7 +5,7 @@
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.usky.issue.domain.YtDeviceStatus">
         <result column="id" property="id"/>
-        <result column="company_code" property="companyCode"/>
+        <result column="company_code" property="companyCode" typeHandler="org.apache.ibatis.type.StringTypeHandler"/>
         <result column="company_name" property="companyName"/>
         <result column="device_code" property="deviceCode"/>
         <result column="device_name" property="deviceName"/>
@@ -16,29 +16,31 @@
         <result column="difference" property="difference"/>
     </resultMap>
 
+    <!-- 离线设备数据查询 -->
     <select id="getDeviceStatusType" resultType="com.usky.issue.domain.YtDeviceStatus">
-        select
-        device_code,device_name,address,device_type,company_name,company_code,data_time
+        SELECT device_code,device_name,address,device_type,company_name,company_code,data_time,difference
         from yt_device_status yds
         <where>
-                difference > 48
-                AND company_code in ('10357','10356','10354','10352','10349','10350','10347','10346','10334','10188',
-                '10343','10348','10331','10320','10320','10164','10071','10345','10144','10064','10336','10131','10205',
-                '10340','10339','10225','10323','10320','10134','10337','10226','10214','10160','10076','10079','10078',
-                '10215','10324','10324','10154','10106','10121','10067','10325','10323','10322','10320','10128','10314',
-                '10315','10312','10222','10077','10146','10151','10232','10116','10114','10122','10166','10353','10358',
-                '10359','10361','10360','10140','10362','10206','10355','10105','10338','10318','10367','10124','10365',
-                '10363','10368','10371','10341','10375','10373','10126','10374','10376','10378')
+            difference > 48
+            AND company_code IN('10357','10356','10354','10352','10349','10350','10347','10346','10334','10188',
+            '10343','10348','10331','10320','10320','10164','10071','10345','10144','10064','10336','10131','10205',
+            '10340','10339','10225','10323','10320','10134','10337','10226','10214','10160','10076','10079','10078',
+            '10215','10324','10324','10154','10106','10121','10067','10325','10323','10322','10320','10128','10314',
+            '10315','10312','10222','10077','10146','10151','10232','10116','10114','10122','10166','10353','10358',
+            '10359','10361','10360','10140','10362','10206','10355','10105','10338','10318','10367','10124','10365',
+            '10363','10368','10371','10341','10375','10373','10126','10374','10376','10378')
         </where>
         ORDER BY company_code ASC
     </select>
+
+    <!-- 离线设备数据导出 -->
     <select id="exportData" resultType="com.usky.issue.domain.YtDeviceStatus">
-        SELECT device_code,device_name,address,device_type,company_name,company_code,data_time
+        SELECT device_code,device_name,address,device_type,company_name,company_code,data_time,difference
         FROM yt_device_status yds
         <where>
             device_type NOT IN ('烟感系统','电气火灾','视频监测')
             AND difference > 48
-            AND company_code IN ('10357','10356','10354','10352','10349','10350','10347','10346','10334','10188',
+            AND company_code IN('10357','10356','10354','10352','10349','10350','10347','10346','10334','10188',
             '10343','10348','10331','10320','10320','10164','10071','10345','10144','10064','10336','10131','10205',
             '10340','10339','10225','10323','10320','10134','10337','10226','10214','10160','10076','10079','10078',
             '10215','10324','10324','10154','10106','10121','10067','10325','10323','10322','10320','10128','10314',
@@ -49,4 +51,25 @@
         ORDER BY company_code ASC
     </select>
 
+    <!--根据传入单位单号查询设备-->
+    <select id="deviceList" resultType="java.util.Map">
+        SELECT
+        device_type AS deviceType,
+        COUNT(*) AS deviceTypeCounts,
+        COUNT(difference &lt; 48 OR NULL) AS onlineCount,
+        COUNT(difference &gt;= 48 OR NULL) AS offlineCount
+        FROM
+        yt_device_status
+        WHERE
+        company_code = #{companyCode}
+        GROUP BY
+        device_type
+        ORDER BY
+        deviceType;
+    </select>
+
+
+
+
+
 </mapper>