Browse Source

案件信息

yq 3 years ago
parent
commit
ffcda07fa4

+ 14 - 0
mhfire-controller/src/main/java/com/bizmatics/mhfire/controller/web/DeviceController.java

@@ -61,6 +61,20 @@ public class DeviceController {
         return ApiResult.success(deviceService.getCollect(current,size,deviceType,deviceCode,startTime,endTime));
     }
 
+    /**
+     * 设备类型统计信息
+     * @param deviceType 设备类型
+     * @param deviceCode 设备编码
+     * @return
+     */
+    @GetMapping("collectOne")
+    public ApiResult<DeviceCollectVO> getCollectOne(@RequestParam(required = false) String deviceType,
+                                                             @RequestParam(required = false) String deviceCode,
+                                                             @RequestParam(required = false) Date startTime,
+                                                             @RequestParam(required = false)Date endTime){
+        return ApiResult.success(deviceService.getCollectOne(deviceType,deviceCode,startTime,endTime));
+    }
+
     /**
      * 查看设备详情
      * @param id 主键id

+ 5 - 0
mhfire-mapping/src/main/java/com/bizmatics/mhfire/persistence/mapper/DeviceMapper.java

@@ -25,4 +25,9 @@ public interface DeviceMapper extends CrudMapper<Device> {
                                         @Param("deviceCode") String deviceCode,
                                         @Param("startTime")Date startTime,
                                         @Param("endTime") Date endTime);
+
+    DeviceCollectVO selectCollectOne(@Param("deviceType") String deviceType,
+                                     @Param("deviceCode") String deviceCode,
+                                     @Param("startTime")Date startTime,
+                                     @Param("endTime") Date endTime);
 }

+ 43 - 0
mhfire-mapping/src/main/resources/mapper/mysql/DeviceMapper.xml

@@ -63,5 +63,48 @@
         </where>
         GROUP BY d.device_type
     </select>
+    <select id="selectCollectOne" resultType="com.bizmatics.mhfire.persistence.mapper.vo.DeviceCollectVO">
+        select d.device_type as deviceType,count(d.id) as deviceCount,count(da.id) as alertCount,
+        count(if(d.device_flag = 1, 1, null)) as lineCount,
+        (
+        select
+        ROUND(COUNT(CASE WHEN dd.device_flag=1 THEN dd.device_flag END)/COUNT(*),2) AS rate_a
+        FROM device as dd
+        where dd.device_type = d.device_type
+        ) as lineRate,
+
+        (
+        select
+        ROUND(COUNT(CASE WHEN dan.id != null THEN dan.id END)/COUNT(*),2) AS rate_a
+        FROM device as dd
+        left join device_alert as dan
+        on dd.`code` = dan.device_code
+        where dd.device_type = d.device_type
+        ) as alertRate,
+
+        (
+        select
+        ROUND(COUNT(CASE WHEN dan.aj_flag=3 THEN dan.aj_flag END)/COUNT(*),2)
+        FROM device_aj as dan
+        where dan.device_type = d.device_type
+        ) as checkRate
+
+        from device as d
+        left join device_alert as da
+        on d.code = da.device_code
+        left join device_aj as aj
+        on d.code = aj.device_code
+        <where>
+            <if test="deviceType != null and deviceType != ''">
+                and d.device_type = #{deviceType}
+            </if>
+            <if test="deviceCode != null and deviceCode != ''">
+                and d.code = #{deviceCode}
+            </if>
+            <if test="startTime != null and endTime != null ">
+                and d.create_time between #{startTime} and #{endTime}
+            </if>
+        </where>
+    </select>
 
 </mapper>

+ 12 - 0
mhfire-service/src/main/java/com/bizmatics/mhfire/service/DeviceService.java

@@ -32,4 +32,16 @@ public interface DeviceService extends CrudService<Device> {
      * @return
      */
     CommonPage<DeviceCollectVO> getCollect(Integer current, Integer size, String deviceType, String deviceCode,Date startTime, Date endTime);
+
+    /**
+     * 统计设备汇总信息
+     * @param deviceType
+     * @param deviceCode
+     * @param startTime
+     * @param endTime
+     * @return
+     */
+    DeviceCollectVO getCollectOne(String deviceType, String deviceCode,Date startTime, Date endTime);
+
+
 }

+ 5 - 0
mhfire-service/src/main/java/com/bizmatics/mhfire/service/impl/DeviceServiceImpl.java

@@ -43,4 +43,9 @@ public class DeviceServiceImpl extends AbstractCrudService<DeviceMapper, Device>
         page = baseMapper.selectCollect(page,deviceType,deviceCode,startTime,endTime);
         return new CommonPage<>(page.getRecords(),page.getTotal(),page.getSize(),page.getCurrent());
     }
+
+    @Override
+    public DeviceCollectVO getCollectOne(String deviceType, String deviceCode, Date startTime, Date endTime) {
+        return baseMapper.selectCollectOne(deviceType,deviceCode,startTime,endTime);
+    }
 }

+ 28 - 3
mhfire-service/src/main/java/com/bizmatics/mhfire/service/impl/JcjAjxxServiceImpl.java

@@ -58,11 +58,34 @@ public class JcjAjxxServiceImpl extends AbstractCrudService<JcjAjxxMapper, JcjAj
                 .between("lasj",startTime,endTime)
                 .groupBy("monthTime","ajlx");
         Map<String, List<AlertStatisticsVO>> typeMap = enhanceList(this.listMaps(queryWrapper));
-        int distanceOfTwoDate = DateUtils.getDistanceOfTwoDateNew(startTime, endTime)+1;
+        Date maxDate = getMaxDate();
+        Date minDate = getMinDate();
+        int distanceOfTwoDate = DateUtils.getDistanceOfTwoDateNew(minDate, maxDate);
         perfect(typeMap,24,distanceOfTwoDate,0);
         return typeMap;
     }
 
+
+    public Date getMaxDate(){
+        IPage<JcjAjxx> page = new Page<>(1, 1);
+        LambdaQueryWrapper<JcjAjxx> maxQuery = Wrappers.lambdaQuery();
+        maxQuery.isNotNull(JcjAjxx::getCreated)
+                .orderByDesc(JcjAjxx::getCreated);
+
+        IPage<JcjAjxx> maxPage = this.page(page, maxQuery);
+        return maxPage.getRecords().get(0).getCreated();
+    }
+
+    public Date getMinDate(){
+        IPage<JcjAjxx> page = new Page<>(1, 1);
+        LambdaQueryWrapper<JcjAjxx> minQuery = Wrappers.lambdaQuery();
+        minQuery
+                .isNotNull(JcjAjxx::getCreated)
+                .orderByAsc(JcjAjxx::getCreated);
+        IPage<JcjAjxx> minPage = this.page(page, minQuery);
+        return minPage.getRecords().get(0).getCreated();
+    }
+
     public void perfect(Map<String, List<AlertStatisticsVO>> typeMap,Integer times,Integer subTime,Integer defaultTime){
         for (String type:ALERT_TYPE) {
             if (!typeMap.containsKey(type)){
@@ -116,8 +139,10 @@ public class JcjAjxxServiceImpl extends AbstractCrudService<JcjAjxxMapper, JcjAj
                 .between("lasj",startTime,endTime)
                 .groupBy("monthTime","ajlx");
         Map<String, List<AlertStatisticsVO>> typeMap = enhanceList(this.listMaps(queryWrapper));
-        int distanceOfTwoDate =Integer.parseInt(DateUtils.getYear(endTime)) - Integer.parseInt(DateUtils.getYear(startTime)) + 1;
-        perfect(typeMap,13,distanceOfTwoDate,1);
+        Date maxDate = getMaxDate();
+        Date minDate = getMinDate();
+        int distanceOfTwoDateYear =Integer.parseInt(DateUtils.getYear(maxDate)) - Integer.parseInt(DateUtils.getYear(minDate)) + 1;
+        perfect(typeMap,13,distanceOfTwoDateYear,1);
         return typeMap;
     }