Browse Source

feat: 车辆信息统计接口

TwoKe945 1 year ago
parent
commit
fa28d279aa

+ 27 - 0
ljclw-core/src/main/java/com/ruizheng/clw/constant/ClwConstant.java

@@ -0,0 +1,27 @@
+package com.ruizheng.clw.constant;
+
+public interface ClwConstant {
+
+//    ------------------------- 车辆信息统计信息常量键
+    /**
+     * 在线
+     */
+    String ONLINE = "online";
+    /**
+     * 离线
+     */
+    String OFFLINE = "offline";
+    /**
+     * 消息提醒
+     */
+    String NOTICE = "notice";
+    /**
+     * 总数
+     */
+    String TOTAL = "total";
+    /**
+     * 未接入
+     */
+    String OFFIOT = "offiot";
+
+}

+ 8 - 6
ljclw-core/src/main/java/com/ruizheng/clw/controller/CarInfoController.java

@@ -1,12 +1,7 @@
 package com.ruizheng.clw.controller;
 
-
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.ruizheng.clw.domain.CarInfo;
 import com.ruizheng.clw.service.CarInfoService;
-import com.ruoyi.common.annotation.DataSource;
 import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.enums.DataSourceType;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -16,7 +11,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.List;
-import java.util.Objects;
 
 @Api(value = "车辆信息", tags = "车辆信息")
 @RestController
@@ -34,5 +28,13 @@ public class CarInfoController {
     }
 
 
+    @GetMapping("/statistics/{deptId}")
+    @ApiOperation("查询车辆列表")
+    public AjaxResult statistics(@PathVariable("deptId") Long deptId) {
+        List<Long> deptIds = carInfoService.getMeAndChildrenDeptId(deptId);
+        return AjaxResult.success(carInfoService.statistics(deptIds));
+    }
+
+
 
 }

+ 14 - 0
ljclw-core/src/main/java/com/ruizheng/clw/mapper/CarInfoMapper.java

@@ -1,12 +1,26 @@
 package com.ruizheng.clw.mapper;
 
 
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ruizheng.clw.domain.CarInfo;
+import com.ruoyi.common.annotation.DataSource;
+import com.ruoyi.common.enums.DataSourceType;
+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;
+
 
 @Repository
 public interface CarInfoMapper extends BaseMapper<CarInfo> {
 
+    /**
+     * 统计数据
+     * @return
+     */
+    @DataSource(DataSourceType.SLAVE)
+    Map<String, Long> statistics(@Param("deptIds") List<Long> deptIds);
 }

+ 7 - 0
ljclw-core/src/main/java/com/ruizheng/clw/service/CarInfoService.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruizheng.clw.domain.CarInfo;
 
 import java.util.List;
+import java.util.Map;
 
 public interface CarInfoService extends IService<CarInfo> {
     /**
@@ -17,4 +18,10 @@ public interface CarInfoService extends IService<CarInfo> {
 
     List<Long> getMeAndChildrenDeptId(Long deptId) ;
 
+    /**
+     * 统计车辆在线、离线数据以及未接入数据
+     * Map Key in {@link com.ruizheng.clw.constant.ClwConstant}
+     * @return
+     */
+    Map<String, Long> statistics(List<Long> ids);
 }

+ 14 - 4
ljclw-core/src/main/java/com/ruizheng/clw/service/imple/CarInfoServiceImpl.java → ljclw-core/src/main/java/com/ruizheng/clw/service/impl/CarInfoServiceImpl.java

@@ -1,7 +1,8 @@
-package com.ruizheng.clw.service.imple;
+package com.ruizheng.clw.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruizheng.clw.constant.ClwConstant;
 import com.ruizheng.clw.domain.CarInfo;
 import com.ruizheng.clw.mapper.CarInfoMapper;
 import com.ruizheng.clw.service.CarInfoService;
@@ -12,14 +13,13 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 
 @Service
 public class CarInfoServiceImpl extends ServiceImpl<CarInfoMapper, CarInfo> implements CarInfoService {
     @Autowired
     private SysDeptMapper sysDeptMapper;
-    @Autowired
-    private CarInfoMapper carInfoMapper;
 
     /**
      * 查询当前节点以及子节点ID
@@ -44,9 +44,19 @@ public class CarInfoServiceImpl extends ServiceImpl<CarInfoMapper, CarInfo> impl
             lambdaQueryWrapper
                     .eq(CarInfo::getOnlineStatus, onlineStatus);
         }
-        return carInfoMapper
+        return baseMapper
                 .selectList(lambdaQueryWrapper);
     }
 
 
+    @Override
+    public Map<String, Long> statistics(List<Long> ids) {
+        Map<String, Long> statistics = baseMapper.statistics(ids);
+        statistics.put(ClwConstant.TOTAL, statistics.get(ClwConstant.ONLINE) + statistics.get(ClwConstant.OFFLINE) + statistics.get(ClwConstant.OFFIOT));
+        statistics.put(ClwConstant.NOTICE, 0L);
+        return statistics;
+    }
+
+
+
 }

+ 47 - 0
ljclw-core/src/main/resources/mapper/CarInfoMapper.xml

@@ -0,0 +1,47 @@
+<?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.ruizheng.clw.mapper.CarInfoMapper">
+    <select id="statistics" resultType="hashmap">
+        select (SELECT
+            count(id)
+        FROM
+            mhjyztk.hzfk_clw_xfcl
+        WHERE
+            online_status = 1 and iot = 1
+            <if test="deptIds != null and deptIds.size()!=0 ">
+                and dep_id in
+                <foreach collection="deptIds" item="item" index="index" open="(" close=")" separator=",">
+                    #{item}
+                </foreach>
+            </if>
+        ) as online,
+       (SELECT
+            count(id)
+        FROM
+            mhjyztk.hzfk_clw_xfcl
+        WHERE
+            (online_status = 0 or online_status is null) and iot = 1
+            <if test="deptIds != null and deptIds.size()!=0 ">
+                and dep_id in
+                <foreach collection="deptIds" item="item" index="index" open="(" close=")" separator=",">
+                    #{item}
+                </foreach>
+            </if>
+        ) as offline,
+       (SELECT
+            count(id)
+        FROM
+            mhjyztk.hzfk_clw_xfcl
+        WHERE
+            (iot = 0 or iot is null)
+            <if test="deptIds != null and deptIds.size()!=0 ">
+                and dep_id in
+                <foreach collection="deptIds" item="item" index="index" open="(" close=")" separator=",">
+                    #{item}
+                </foreach>
+            </if>
+        ) as offiot
+    </select>
+</mapper>