Просмотр исходного кода

新增 获取设备类型统计接口

zhaiyifei 10 месяцев назад
Родитель
Сommit
5ecf9badb4

+ 62 - 0
src/main/java/com/yunfeiyun/agmp/iotm/web/controller/IotDeviceBindController.java

@@ -1,17 +1,21 @@
 package com.yunfeiyun.agmp.iotm.web.controller;
 
 import com.yunfeiyun.agmp.common.core.controller.BaseController;
+import com.yunfeiyun.agmp.common.core.domain.AjaxResult;
 import com.yunfeiyun.agmp.common.core.page.TableDataInfo;
 import com.yunfeiyun.agmp.common.utils.StringUtils;
 import com.yunfeiyun.agmp.iotm.web.domain.IotDeviceBindBlockVo;
 import com.yunfeiyun.agmp.iotm.web.domain.IotDeviceBindLandVo;
+import com.yunfeiyun.agmp.iotm.web.domain.IotDeviceBindStatisticVo;
 import com.yunfeiyun.agmp.iotm.web.domain.IotDeviceBindVo;
 import com.yunfeiyun.agmp.iotm.web.domain.reqvo.IotDeviceBindListReqVo;
 import com.yunfeiyun.agmp.iotm.web.domain.resvo.FmsBlockListByDeviceBindResVo;
 import com.yunfeiyun.agmp.iotm.web.domain.resvo.FmsLandListByDeviceBindResVo;
+import com.yunfeiyun.agmp.iotm.web.domain.resvo.IotDeviceBindStatisticResVo;
 import com.yunfeiyun.agmp.iotm.web.service.FmsBlockService;
 import com.yunfeiyun.agmp.iotm.web.service.FmsLandService;
 import com.yunfeiyun.agmp.iotm.web.service.IIotDeviceBindService;
+import com.yunfeiyun.agmp.iotm.web.service.ITosDevicetypeService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -40,6 +44,9 @@ public class IotDeviceBindController extends BaseController {
     @Autowired
     private FmsBlockService fmsBlockService;
 
+    @Autowired
+    private ITosDevicetypeService tosDeviceService;
+
     /**
      * 查询基地列表
      */
@@ -147,4 +154,59 @@ public class IotDeviceBindController extends BaseController {
         return getDataTable(iotDeviceBindVoList);
     }
 
+    /**
+     * 获取设备绑定统计信息
+     */
+    @GetMapping("/statistic")
+    public AjaxResult statistic() {
+        List<IotDeviceBindStatisticVo> iotDeviceBindStatisticVoList = iIotDeviceBindService.selectDeviceBindStatistic();
+        List<IotDeviceBindStatisticVo> iotDeviceBindTypeStatisticVoList = new ArrayList<>();
+        int totalNum = 0;
+        int bindNum = 0;
+
+        for (IotDeviceBindStatisticVo iotDeviceBindStatisticVo : iotDeviceBindStatisticVoList) {
+            if (iotDeviceBindStatisticVo.getBindNum() > 0) {
+                bindNum = iotDeviceBindStatisticVo.getBindNum();
+            }
+
+            int devTypeNum = iotDeviceBindStatisticVo.getDevTypeNum();
+            IotDeviceBindStatisticVo d = new IotDeviceBindStatisticVo();
+            d.setDevtypeBid(iotDeviceBindStatisticVo.getDevtypeBid());
+            d.setDevTypeNum(devTypeNum);
+            d.setDevtypeName(iotDeviceBindStatisticVo.getDevtypeName());
+            iotDeviceBindTypeStatisticVoList.add(d);
+            totalNum += devTypeNum;
+        }
+
+        IotDeviceBindStatisticVo dHead = new IotDeviceBindStatisticVo();
+        dHead.setDevTypeNum(totalNum);
+        dHead.setDevtypeName("全部");
+        iotDeviceBindTypeStatisticVoList.add(0, dHead);
+
+
+        IotDeviceBindStatisticVo bHead = new IotDeviceBindStatisticVo();
+        bHead.setBindName("已绑定");
+        bHead.setBindNum(bindNum);
+        bHead.setBindStatus("1");
+
+        IotDeviceBindStatisticVo uHead = new IotDeviceBindStatisticVo();
+        uHead.setBindName("未绑定");
+        uHead.setBindNum(totalNum - bindNum);
+        uHead.setBindStatus("0");
+
+        IotDeviceBindStatisticVo aHead = new IotDeviceBindStatisticVo();
+        aHead.setBindName("全部");
+        aHead.setBindNum(totalNum);
+
+        List<IotDeviceBindStatisticVo> iotDeviceBindStatusStatisticVoList = new ArrayList<>();
+        iotDeviceBindStatusStatisticVoList.add(aHead);
+        iotDeviceBindStatusStatisticVoList.add(bHead);
+        iotDeviceBindStatusStatisticVoList.add(uHead);
+
+        IotDeviceBindStatisticResVo responseInfo = new IotDeviceBindStatisticResVo();
+        responseInfo.setIotDeviceBindTypeStatisticVoList(iotDeviceBindTypeStatisticVoList);
+        responseInfo.setIotDeviceBindStatusStatisticVoList(iotDeviceBindStatusStatisticVoList);
+        return success(responseInfo);
+    }
+
 }

+ 39 - 0
src/main/java/com/yunfeiyun/agmp/iotm/web/domain/IotDeviceBindStatisticVo.java

@@ -0,0 +1,39 @@
+package com.yunfeiyun.agmp.iotm.web.domain;
+
+import com.yunfeiyun.agmp.common.annotation.Excel;
+import lombok.Data;
+
+@Data
+public class IotDeviceBindStatisticVo {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 设备类型标识
+     */
+    @Excel(name = "设备类型标识")
+    private String devtypeBid;
+
+    /**
+     * 设备类型名称
+     */
+    @Excel(name = "设备类型名称")
+    private String devtypeName;
+    /**
+     * 设备类型数量
+     */
+    @Excel(name = "设备类型数量")
+    private int devTypeNum;
+
+    /**
+     * 已绑定设备数量
+     */
+    private int bindNum;
+
+    /**
+     * 绑定状态
+     */
+    private String bindStatus;
+
+    /** 绑定名称 */
+    private String bindName;
+}

+ 14 - 0
src/main/java/com/yunfeiyun/agmp/iotm/web/domain/resvo/IotDeviceBindStatisticResVo.java

@@ -0,0 +1,14 @@
+package com.yunfeiyun.agmp.iotm.web.domain.resvo;
+
+import com.yunfeiyun.agmp.iotm.web.domain.IotDeviceBindStatisticVo;
+import lombok.Data;
+
+import java.util.List;
+
+
+@Data
+public class IotDeviceBindStatisticResVo {
+    private static final long serialVersionUID = 1L;
+    private List<IotDeviceBindStatisticVo> iotDeviceBindTypeStatisticVoList;
+    private List<IotDeviceBindStatisticVo> iotDeviceBindStatusStatisticVoList;
+}

+ 9 - 8
src/main/java/com/yunfeiyun/agmp/iotm/web/mapper/IotDeviceBindMapper.java

@@ -1,5 +1,6 @@
 package com.yunfeiyun.agmp.iotm.web.mapper;
 
+import com.yunfeiyun.agmp.iotm.web.domain.IotDeviceBindStatisticVo;
 import com.yunfeiyun.agmp.iotm.web.domain.IotDeviceBindVo;
 import com.yunfeiyun.agmp.iotm.web.domain.reqvo.IotDeviceBindListReqVo;
 
@@ -27,14 +28,14 @@ public interface IotDeviceBindMapper {
      * @return
      */
     public List<IotDeviceBindVo> selectIotDeviceBindDetailList(IotDeviceBindListReqVo iotDeviceBindListReqVo);
-//
-//    /**
-//     * 获取设备绑定统计信息
-//     *
-//     * @param
-//     * @return
-//     */
-//    public List<IotDeviceBindStatisticVo> selectDeviceBindStatistic();
+
+    /**
+     * 获取设备绑定统计信息
+     *
+     * @param
+     * @return
+     */
+    public List<IotDeviceBindStatisticVo> selectDeviceBindStatistic(String tid);
 //
 //    public List<IotDeviceBindStatisticVo> selectDeviceBindStatisticByLandId(IotDeviceBindListReqVo reqVo);
 //

+ 4 - 1
src/main/java/com/yunfeiyun/agmp/iotm/web/service/IIotDeviceBindService.java

@@ -1,5 +1,6 @@
 package com.yunfeiyun.agmp.iotm.web.service;
 
+import com.yunfeiyun.agmp.iotm.web.domain.IotDeviceBindStatisticVo;
 import com.yunfeiyun.agmp.iotm.web.domain.IotDeviceBindVo;
 import com.yunfeiyun.agmp.iotm.web.domain.reqvo.IotDeviceBindListReqVo;
 
@@ -15,6 +16,8 @@ public interface IIotDeviceBindService {
      * 查询出所有设备列表以及基地绑定详情关系
      */
     public List<IotDeviceBindVo> selectIotDeviceBindDetailList(IotDeviceBindListReqVo iotDeviceBindListReqVo);
+
+    public List<IotDeviceBindStatisticVo> selectDeviceBindStatistic();
 //
 //    /**
 //     * 绑定设备到基地或地块
@@ -25,7 +28,7 @@ public interface IIotDeviceBindService {
 //
 //    public int iotDeviceBindDel(IotDeviceBindDelReqVo iotDeviceBindDelReqVo);
 //
-//    public List<IotDeviceBindStatisticVo> selectDeviceBindStatistic();
+
 //    public List<IotDeviceBindStatisticVo> selectDeviceBindStatisticByLandId(IotDeviceBindListReqVo reqVo);
 //
 //    List<IotDeviceBindVo> selectIotDeviceBindListBylandIdAndBlock(String landId, String blockId);

+ 12 - 8
src/main/java/com/yunfeiyun/agmp/iotm/web/service/impl/IotDeviceBindServiceImpl.java

@@ -1,6 +1,7 @@
 package com.yunfeiyun.agmp.iotm.web.service.impl;
 
 import com.yunfeiyun.agmp.common.utils.SecurityUtils;
+import com.yunfeiyun.agmp.iotm.web.domain.IotDeviceBindStatisticVo;
 import com.yunfeiyun.agmp.iotm.web.domain.IotDeviceBindVo;
 import com.yunfeiyun.agmp.iotm.web.domain.reqvo.IotDeviceBindListReqVo;
 import com.yunfeiyun.agmp.iotm.web.mapper.IotDeviceBindMapper;
@@ -46,6 +47,16 @@ public class IotDeviceBindServiceImpl implements IIotDeviceBindService {
         iotDeviceBindListReqVo.setTid(SecurityUtils.getTid());
         return iotDeviceBindMapper.selectIotDeviceBindDetailList(iotDeviceBindListReqVo);
     }
+
+    /**
+     * @param
+     * @return
+     */
+    @Override
+    public List<IotDeviceBindStatisticVo> selectDeviceBindStatistic() {
+        String tid = SecurityUtils.getTid();
+        return iotDeviceBindMapper.selectDeviceBindStatistic(tid);
+    }
 //
 //    /**
 //     * 绑定设备到基地或地块
@@ -140,14 +151,7 @@ public class IotDeviceBindServiceImpl implements IIotDeviceBindService {
 //        return status;
 //    }
 //
-//    /**
-//     * @param
-//     * @return
-//     */
-//    @Override
-//    public List<IotDeviceBindStatisticVo> selectDeviceBindStatistic() {
-//        return iotDeviceBindMapper.selectDeviceBindStatistic();
-//    }
+
 //
 //    @Override
 //    public List<IotDeviceBindStatisticVo> selectDeviceBindStatisticByLandId(IotDeviceBindListReqVo reqVo) {

+ 3 - 3
src/main/resources/mapper/FmsBlockMapper.xml

@@ -90,19 +90,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 <!--        SELECT FmsBlock.*-->
 <!--        ,FmsLand.landName-->
 <!--        ,IotDevice.devBid,IotDevice.devName,IotDevice.devStatus,IotDevice.devUpdateddate-->
-<!--        ,IotDevicetype.devtypePid,IotDevicetype.devtypeName-->
+<!--        ,TosDevicetype.devtypePid,TosDevicetype.devtypeName-->
 <!--        ,(select GROUP_CONCAT(resUrl) from SysRes where SysRes.resBusId = FmsBlock.blockId) blockPreview-->
 <!--        ,SysUser.userMobile-->
 <!--        FROM FmsBlock-->
 
 <!--        left join TmnBlock on TmnBlock.blockId=FmsBlock.blockId-->
 <!--        left join IotDevice on IotDevice.devBid= TmnBlock.tmnId-->
-<!--        left join IotDevicetype on IotDevicetype.devtypeBid = IotDevice.devtypeBid-->
+<!--        left join TosDevicetype on TosDevicetype.devtypeBid = IotDevice.devtypeBid-->
 <!--        left join FmsLand on FmsLand.landId = FmsBlock.landId-->
 <!--        left join SysUser on SysUser.userId = FmsBlock.blockManager-->
 
 <!--        <where>-->
-<!--            <if test="devtypePid != null  and devtypePid != ''">and IotDevicetype.devtypePid = #{devtypePid}</if>-->
+<!--            <if test="devtypePid != null  and devtypePid != ''">and TosDevicetype.devtypePid = #{devtypePid}</if>-->
 <!--            <if test="landId != null  and landId != ''">and FmsLand.landId = #{landId}</if>-->
 <!--            <if test="landName != null  and landName != ''">and FmsLand.landName like concat('%', #{landName}, '%')</if>-->
 <!--            <if test="blockName != null  and blockName != ''">and FmsBlock.blockName like concat('%', #{blockName}, '%')</if>-->

+ 3 - 3
src/main/resources/mapper/FmsLandMapper.xml

@@ -70,18 +70,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 <!--    <select id="selectFmsLandListWithDevice" resultType="FmsLandListWithDeviceResVo">-->
 <!--    SELECT FmsLand.*-->
 <!--    ,IotDevice.devBid,IotDevice.devName,IotDevice.devStatus,IotDevice.devUpdateddate-->
-<!--    ,IotDevicetype.devtypePid,IotDevicetype.devtypeName-->
+<!--    ,TosDevicetype.devtypePid,TosDevicetype.devtypeName-->
 <!--        ,(select GROUP_CONCAT(resUrl) from SysRes where SysRes.resBusId = FmsLand.landId) landPreview-->
 <!--        ,SysUser.userName landManagerName-->
 <!--        ,SysUser.userMobile-->
 <!--        FROM FmsLand-->
 <!--    left join TmnLand on TmnLand.landId=FmsLand.landId-->
 <!--    left join IotDevice on IotDevice.devBid= TmnLand.tmnId-->
-<!--    left join IotDevicetype on IotDevicetype.devtypeBid = IotDevice.devtypeBid-->
+<!--    left join TosDevicetype on TosDevicetype.devtypeBid = IotDevice.devtypeBid-->
 <!--        left join SysUser on SysUser.userId = FmsLand.landManager-->
 
 <!--        <where>-->
-<!--            <if test="devtypePid != null  and devtypePid != ''">and IotDevicetype.devtypePid = #{devtypePid}</if>-->
+<!--            <if test="devtypePid != null  and devtypePid != ''">and TosDevicetype.devtypePid = #{devtypePid}</if>-->
 <!--            <if test="landName != null  and landName != ''">and FmsLand.landName like concat('%', #{landName}, '%')</if>-->
 <!--            <if test="landLocation != null  and landLocation != ''">and FmsLand.landLocation like concat('%', #{landLocation}, '%')</if>-->
 <!--            <if test="landManagername != null  and landManagername != ''">and FmsBlock.blockManagername like concat('%', #{blockManagername}, '%')</if>-->

+ 26 - 25
src/main/resources/mapper/IotDeviceBindMapper.xml

@@ -15,12 +15,12 @@
                     FROM TmnLand AS t
                     WHERE NOT ((t.landId IS NULL) OR (t.landId = ''))
                 ) AS t ON t.tmnId = d.devBid
-                LEFT JOIN IotDevicetype AS dt on dt.devtypeBid = d.devtypeBid
+                LEFT JOIN TosDevicetype AS dt on dt.devtypeBid = d.devtypeBid
                 LEFT JOIN FmsLand AS ft ON t.landId = ft.landId
                 LEFT JOIN TmnBlock AS b ON d.devBid = b.tmnId
                 LEFT JOIN FmsBlock AS fb ON b.blockId = fb.blockId
             <where>
-                d.devDelstatus = '0' and tid = #{tid}
+                d.devDelstatus = '0' and d.tid = #{tid}
                 <if test="devtypeBid != null  and devtypeBid != ''">and d.devtypeBid = #{devtypeBid}</if>
                 <if test="devCode != null  and devCode != ''">
                     and (
@@ -63,7 +63,7 @@
             LEFT JOIN TmnBlock AS b ON d.devBid = b.tmnId
             LEFT JOIN FmsBlock AS fb ON b.blockId = fb.blockId
         <where>
-            d.devDelstatus = '0' and tid = #{tid}
+            d.devDelstatus = '0' and d.tid = #{tid}
             <if test="devBidList != null and devBidList.size() > 0">
                 and d.devBid in
                 <foreach collection="devBidList" item="item" open="(" separator="," close=")">
@@ -76,26 +76,27 @@
         GROUP BY d.devBid, t.landId, b.blockId
     </select>
 
-<!--    <select id="selectDeviceBindStatistic" resultType="IotDeviceBindStatisticVo">-->
-<!--        SELECT dt.devtypeBid, dt.devtypeName, COUNT(*) AS devTypeNum, (-->
-<!--            SELECT count(*) AS bindNum-->
-<!--            FROM (-->
-<!--                SELECT d.devBid, t.landId-->
-<!--                FROM IotDevice AS d-->
-<!--                LEFT JOIN (-->
-<!--                    SELECT *-->
-<!--                    FROM TmnLand AS t-->
-<!--                    WHERE NOT ((t.landId IS NULL) OR (t.landId = ''))-->
-<!--                ) AS t ON t.tmnId = d.devBid-->
-<!--                WHERE d.devDelstatus = '0' AND NOT t.landId IS NULL-->
-<!--                GROUP BY d.devBid-->
-<!--            ) AS df-->
-<!--        ) AS bindNum-->
-<!--        FROM IotDevice AS d-->
-<!--        LEFT JOIN IotDevicetype AS dt ON dt.devtypeBid = d.devtypeBid-->
-<!--        where d.devDelstatus = '0' AND NOT ((dt.devtypeBid IS NULL) OR (dt.devtypeBid = ''))-->
-<!--        GROUP BY dt.devtypeBid-->
-<!--    </select>-->
+    <select id="selectDeviceBindStatistic" parameterType="String" resultType="IotDeviceBindStatisticVo">
+        SELECT dt.devtypeBid, dt.devtypeName, COUNT(*) AS devTypeNum, (
+            SELECT count(*) AS bindNum
+            FROM (
+                SELECT d.devBid, t.landId
+                FROM IotDevice AS d
+                LEFT JOIN (
+                    SELECT *
+                    FROM TmnLand AS t
+                    WHERE NOT ((t.landId IS NULL) OR (t.landId = ''))
+                ) AS t ON t.tmnId = d.devBid
+                WHERE d.devDelstatus = '0' AND d.tid = #{tid} AND NOT t.landId IS NULL
+                GROUP BY d.devBid
+            ) AS df
+        ) AS bindNum
+        FROM IotDevice AS d
+            LEFT JOIN TosDevicetype AS dt ON dt.devtypeBid = d.devtypeBid
+        where d.devDelstatus = '0' AND d.tid = #{tid}
+            AND NOT ((dt.devtypeBid IS NULL) OR (dt.devtypeBid = ''))
+        GROUP BY dt.devtypeBid
+    </select>
 
 <!--    <select id="selectDeviceBindStatisticByLandId" parameterType="IotDeviceBindListReqVo"-->
 <!--            resultType="IotDeviceBindStatisticVo">-->
@@ -114,7 +115,7 @@
 <!--        ) AS df-->
 <!--        ) AS bindNum-->
 <!--        FROM IotDevice AS d-->
-<!--        LEFT JOIN IotDevicetype AS dt ON dt.devtypeBid = d.devtypeBid-->
+<!--        LEFT JOIN TosDevicetype AS dt ON dt.devtypeBid = d.devtypeBid-->
 <!--        left join TmnLand on TmnLand.tmnId = d.devBid-->
 <!--        where d.devDelstatus = '0' AND NOT ((dt.devtypeBid IS NULL) OR (dt.devtypeBid = ''))-->
 <!--        <if test="landId != null  and landId != ''">and TmnLand.landId = #{landId}</if>-->
@@ -128,7 +129,7 @@
 <!--        fb.blockId, fb.blockName,dt.devtypeName  from IotDevice d-->
 <!--        LEFT JOIN TmnBase b ON d.devBid = b.tmnId-->
 <!--        left join  TmnBlock a on a.tmnId=d.devBid-->
-<!--        LEFT JOIN IotDevicetype AS dt ON dt.devtypeBid = d.devtypeBid-->
+<!--        LEFT JOIN TosDevicetype AS dt ON dt.devtypeBid = d.devtypeBid-->
 <!--        LEFT JOIN FmsBlock AS fb ON a.blockId = fb.blockId-->
 <!--        left join  FmsLand as fl on fl.landId=fb.landId-->