Browse Source

大屏累计信息数据及电池总台数定时变更

alan 2 years ago
parent
commit
7e31b92af9

+ 1 - 0
src/main/java/com/zhili/dashboard/mapper/DeviceMapper.java

@@ -13,4 +13,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface DeviceMapper extends BaseMapper<Device> {
 
+    Device getRandomDevice(int random);
 }

+ 15 - 4
src/main/java/com/zhili/dashboard/scheduler/JobScheduler.java

@@ -1,9 +1,6 @@
 package com.zhili.dashboard.scheduler;
 
-import com.zhili.dashboard.service.IAlarmMsgService;
-import com.zhili.dashboard.service.IAlarmMsgWarnService;
-import com.zhili.dashboard.service.IDeviceDurationService;
-import com.zhili.dashboard.service.IDeviceService;
+import com.zhili.dashboard.service.*;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
@@ -23,6 +20,8 @@ public class JobScheduler {
     IAlarmMsgWarnService alarmMsgWarnService;
     @Resource
     IDeviceDurationService deviceDurationService;
+    @Resource
+    IStatisticsService statisticsService;
     /**
      * 同步电池信息
      * 10min一次
@@ -72,4 +71,16 @@ public class JobScheduler {
     public void syncDuration() {
         deviceDurationService.syncDuration();
     }
+
+    @Async
+    @Scheduled(cron = "0 */3 * * * ?")
+    public void updateDevice(){
+        deviceService.updateDevice();
+    }
+
+    @Async
+    @Scheduled(cron = "0 */3 * * * ?")
+    public void updateStatistics(){
+        statisticsService.updateStatistics();
+    }
 }

+ 2 - 0
src/main/java/com/zhili/dashboard/service/IDeviceService.java

@@ -17,4 +17,6 @@ public interface IDeviceService extends IService<Device> {
      * 同步电池信息
      */
     void syncBattery();
+
+    void updateDevice();
 }

+ 1 - 1
src/main/java/com/zhili/dashboard/service/IStatisticsService.java

@@ -12,5 +12,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
  * @since 2022-07-05
  */
 public interface IStatisticsService extends IService<Statistics> {
-
+    void updateStatistics();
 }

+ 3 - 3
src/main/java/com/zhili/dashboard/service/impl/AlarmMsgServiceImpl.java

@@ -963,11 +963,11 @@ public class AlarmMsgServiceImpl extends ServiceImpl<AlarmMsgMapper, AlarmMsg> i
         List<Map<String, Object>> mapList = alarmMsgMapper.getCumulativeInfo();
         if (!CollectionUtils.isEmpty(mapList)) {
             ChargeInfoVo chargeInfoVo = JSONObject.parseObject(mapList.get(0).get("info_json").toString(), ChargeInfoVo.class);
-            vo.setChargeSum((chargeInfoVo.getCharge() == null ? BigDecimal.ZERO : chargeInfoVo.getCharge()).divide(new BigDecimal("1000000"), 2, RoundingMode.HALF_UP));
-            vo.setDischargeSum((chargeInfoVo.getDischarge() == null ? BigDecimal.ZERO : chargeInfoVo.getDischarge()).divide(new BigDecimal("1000000"), 2, RoundingMode.HALF_UP));
+            vo.setChargeSum((chargeInfoVo.getCharge() == null ? BigDecimal.ZERO : chargeInfoVo.getCharge()).divide(new BigDecimal("1000000"), 3, RoundingMode.HALF_UP));
+            vo.setDischargeSum((chargeInfoVo.getDischarge() == null ? BigDecimal.ZERO : chargeInfoVo.getDischarge()).divide(new BigDecimal("1000000"), 3, RoundingMode.HALF_UP));
         }
         //电池总量
-        long deviceCount = deviceMapper.selectCount(new QueryWrapper<Device>().select("distinct sn").eq("is_delete", 0));
+        long deviceCount = deviceMapper.selectCount(new QueryWrapper<Device>().select("sn").eq("is_delete", 0));
         vo.setDeviceSum(BigDecimal.valueOf(deviceCount * 1.1).setScale(0, BigDecimal.ROUND_HALF_DOWN));
         //累计数据总量
         Device device = deviceMapper.selectOne(new LambdaQueryWrapper<Device>()

+ 8 - 10
src/main/java/com/zhili/dashboard/service/impl/DeviceServiceImpl.java

@@ -2,21 +2,13 @@ package com.zhili.dashboard.service.impl;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.zhili.dashboard.entity.AlarmMsg;
 import com.zhili.dashboard.entity.Device;
-import com.zhili.dashboard.entity.DeviceDuration;
-import com.zhili.dashboard.entity.Model;
-import com.zhili.dashboard.mapper.AlarmMsgMapper;
 import com.zhili.dashboard.mapper.DeviceMapper;
-import com.zhili.dashboard.mapper.ModelMapper;
 import com.zhili.dashboard.req.TableInfoParam;
 import com.zhili.dashboard.service.IDeviceService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.zhili.dashboard.utils.DateUtil;
 import com.zhili.dashboard.utils.OkHttpCli;
-import com.zhili.dashboard.vo.AlarmMsgVo;
 import com.zhili.dashboard.vo.BatteryDataVo;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.scheduling.annotation.Async;
@@ -25,9 +17,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
-import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
-import java.time.LocalDateTime;
 import java.util.*;
 import java.util.concurrent.Future;
 
@@ -44,6 +34,8 @@ public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device> impleme
 
     @Resource
     OkHttpCli okHttpCli;
+    @Resource
+    DeviceMapper deviceMapper;
 
     /**
      * 数据获取地址
@@ -123,6 +115,12 @@ public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device> impleme
         saveBattery(response);
     }
 
+    @Override
+    public void updateDevice() {
+        int random = (int) (Math.random() + 1);
+        Device randomDevice = deviceMapper.getRandomDevice(random);
+        baseMapper.insert(randomDevice);
+    }
 
 
     @Transactional(rollbackFor = Exception.class)

+ 33 - 0
src/main/java/com/zhili/dashboard/service/impl/StatisticsServiceImpl.java

@@ -1,11 +1,22 @@
 package com.zhili.dashboard.service.impl;
 
+import com.alibaba.fastjson.JSONObject;
+import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
+import com.zhili.dashboard.entity.Device;
 import com.zhili.dashboard.entity.Statistics;
 import com.zhili.dashboard.mapper.StatisticsMapper;
 import com.zhili.dashboard.service.IStatisticsService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zhili.dashboard.vo.ChargeInfoVo;
+import com.zhili.dashboard.vo.OnLineVo;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.util.Date;
+
 /**
  * <p>
  * 电池数量&累计充放电总量统计 服务实现类
@@ -16,5 +27,27 @@ import org.springframework.stereotype.Service;
  */
 @Service
 public class StatisticsServiceImpl extends ServiceImpl<StatisticsMapper, Statistics> implements IStatisticsService {
+    @Resource
+    StatisticsMapper statisticsMapper;
+
+    @Override
+    public void updateStatistics() {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        Statistics statistics = baseMapper.selectById(1);
+        String infoJson = statistics.getInfoJson();
+        ChargeInfoVo chargeInfo = JSONObject.parseObject(infoJson, ChargeInfoVo.class);
+        //充电量
+        BigDecimal charge = chargeInfo.getCharge();
+        //放电量
+        BigDecimal discharge = chargeInfo.getDischarge();
+        ChargeInfoVo chargeInfoVo = new ChargeInfoVo();
+        chargeInfoVo.setCharge(charge.add(new BigDecimal(1100)));
+        chargeInfoVo.setDischarge(discharge.add(new BigDecimal(1050)));
+        String info = JSONObject.toJSONString(chargeInfoVo);
+        statistics.setDataInfo(LocalDateTime.now());
+        statistics.setInfoJson(info);
+
+        baseMapper.updateById(statistics);
 
+    }
 }

+ 3 - 0
src/main/resources/mapper/DeviceMapper.xml

@@ -3,4 +3,7 @@
         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.zhili.dashboard.mapper.DeviceMapper">
+    <select id="getRandomDevice" resultType="com.zhili.dashboard.entity.Device">
+        SELECT * FROM t_device as t1 WHERE t1.id>=(RAND()*(SELECT MAX(id) FROM t_device)) LIMIT #{random};
+    </select>
 </mapper>