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

[电表][修改]:优化离线扫描函数

release_toaliyun_real
hupeng 6 лет назад
Родитель
Сommit
024a02b014
9 измененных файлов: 46 добавлений и 31 удалений
  1. +2
    -0
      mallinkAdmin/src/main/resources/db/migration/V201907291703__REICON_POWER_MENU.sql
  2. +2
    -0
      mallinkCallback/src/main/java/com/iformall/controller/device/WxDeviceScreenAdController.java
  3. +14
    -28
      mallinkSchedule/src/main/java/com/iformall/schedule/DeviceHbCheckSchedule.java
  4. +3
    -1
      mallinkService/src/main/java/com/iformall/mapper/KwBoxMapper.java
  5. +2
    -0
      mallinkService/src/main/java/com/iformall/mapper/KwMeterMapper.java
  6. +3
    -1
      mallinkService/src/main/java/com/iformall/mapper/WxDeviceMapper.java
  7. +7
    -0
      mallinkService/src/main/resources/mapper/KwBoxMapper.xml
  8. +7
    -0
      mallinkService/src/main/resources/mapper/KwMeterMapper.xml
  9. +6
    -1
      mallinkService/src/main/resources/mapper/WxDeviceMapper.xml

+ 2
- 0
mallinkAdmin/src/main/resources/db/migration/V201907291703__REICON_POWER_MENU.sql Просмотреть файл

@@ -0,0 +1,2 @@
UPDATE `mall_permission` SET `icon` = 'icon-iconfontchangemeter-copy' WHERE (`id` = '108');
UPDATE `mall_permission` SET `icon` = 'icon-dianbiao' WHERE (`id` = '952');

+ 2
- 0
mallinkCallback/src/main/java/com/iformall/controller/device/WxDeviceScreenAdController.java Просмотреть файл

@@ -8,6 +8,7 @@ import com.iformall.common.ResultData;
import com.iformall.controller.base.BaseController;
import com.iformall.domain.po.WxDevice;
import com.iformall.domain.po.WxScreenAd;
import com.iformall.enums.EnumDeviceOnlineStatus;
import com.iformall.enums.EnumScreenAdStatus;
import com.iformall.enums.EnumScreenAdType;
import com.iformall.service.*;
@@ -97,6 +98,7 @@ public class WxDeviceScreenAdController extends BaseController {
if (wxDevice.getFirstHbTime() == null)
record.setFirstHbTime(new Date());
record.setLastHbTime(new Date());
record.setOnlineStatus(EnumDeviceOnlineStatus.ONLINE.getCode());
record.setVersion(paramMap.get("version"));
wxDeviceService.saveOrUpdate(record);



+ 14
- 28
mallinkSchedule/src/main/java/com/iformall/schedule/DeviceHbCheckSchedule.java Просмотреть файл

@@ -1,12 +1,11 @@
package com.iformall.schedule;

import com.iformall.domain.po.WxDevice;

import com.iformall.enums.EnumDeviceOnlineStatus;
import com.iformall.enums.EnumDeviceStatus;
import com.iformall.mapper.KwBoxMapper;
import com.iformall.mapper.KwMeterMapper;
import com.iformall.mapper.WxDeviceMapper;

import com.iformall.service.WxDeviceService;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -15,7 +14,6 @@ import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.util.Date;
import java.util.List;


@Component
@@ -28,31 +26,19 @@ public class DeviceHbCheckSchedule {
@Autowired
WxDeviceMapper wxDeviceMapper;

@Autowired
KwBoxMapper kwBoxMapper;

@Autowired
KwMeterMapper kwMeterMapper;

@Scheduled(cron = "0 */5 * * * *?") // 每5分钟检查一次
//@Scheduled(cron = "*/10 * * * * ?") // 测试10秒中一次
public void deviceHbCheckSchedule() {

WxDevice wxDevice = new WxDevice();
wxDevice.setStatus(EnumDeviceStatus.VALID.getCode());
List<WxDevice> list = wxDeviceMapper.findList(wxDevice);

list.stream().forEach(d->{
WxDevice record = new WxDevice();
record.setId(d.getId());

if (d.getLastHbTime() == null) {
record.setOnlineStatus(EnumDeviceOnlineStatus.OFFLINE.getCode());
} else {
if (new Date().getTime() - d.getLastHbTime().getTime() > TIME_OUT_VALUE) {
record.setOnlineStatus(EnumDeviceOnlineStatus.OFFLINE.getCode());
} else {
record.setOnlineStatus(EnumDeviceOnlineStatus.ONLINE.getCode());
}
}
if (!d.getOnlineStatus().equals(record.getOnlineStatus())) {
wxDeviceMapper.updateByPrimaryKeySelective(record);
}
});
public void offlineCheckSchedule() {
Date expiredTime = new Date((new Date().getTime() - TIME_OUT_VALUE));
wxDeviceMapper.offlineScan(expiredTime);
kwBoxMapper.offlineScan(expiredTime);
kwMeterMapper.offlineScan(expiredTime);
}

}

+ 3
- 1
mallinkService/src/main/java/com/iformall/mapper/KwBoxMapper.java Просмотреть файл

@@ -2,12 +2,14 @@ package com.iformall.mapper;

import com.iformall.common.CommonMapper;
import com.iformall.domain.po.KwBox;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

public interface KwBoxMapper extends CommonMapper<KwBox, Long> {

List<KwBox> findList(KwBox param);

int offlineScan(@Param("expiredTime") Date expiredTime);
}

+ 2
- 0
mallinkService/src/main/java/com/iformall/mapper/KwMeterMapper.java Просмотреть файл

@@ -4,6 +4,7 @@ import com.iformall.common.CommonMapper;
import com.iformall.domain.po.KwMeter;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

public interface KwMeterMapper extends CommonMapper<KwMeter, Long> {
@@ -19,4 +20,5 @@ public interface KwMeterMapper extends CommonMapper<KwMeter, Long> {
int unbind(@Param("meterId")Long meterId);
int unbindBatch(@Param("boxId")Long boxId);

int offlineScan(@Param("expiredTime") Date expiredTime);
}

+ 3
- 1
mallinkService/src/main/java/com/iformall/mapper/WxDeviceMapper.java Просмотреть файл

@@ -2,11 +2,13 @@ package com.iformall.mapper;

import com.iformall.common.CommonMapper;
import com.iformall.domain.po.WxDevice;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

public interface WxDeviceMapper extends CommonMapper<WxDevice, Long> {

List<WxDevice> findList(WxDevice wxDevice);
int offlineScan(@Param("expiredTime") Date expiredTime);
}

+ 7
- 0
mallinkService/src/main/resources/mapper/KwBoxMapper.xml Просмотреть файл

@@ -78,4 +78,11 @@
</select>


<update id="offlineScan" parameterType="java.util.Date">
update kw_box set `online_status` = 0
where `status` = 0
and `online_status` = 1
and `last_online_time` &lt; #{expiredTime}
</update>

</mapper>

+ 7
- 0
mallinkService/src/main/resources/mapper/KwMeterMapper.xml Просмотреть файл

@@ -145,4 +145,11 @@
where `id` = #{id}
</update>

<update id="offlineScan" parameterType="java.util.Date">
update kw_meter set `online_status` = 0
where `status` = 0
and `online_status` = 1
and `last_online_time` &lt; #{expiredTime}
</update>

</mapper>

+ 6
- 1
mallinkService/src/main/resources/mapper/WxDeviceMapper.xml Просмотреть файл

@@ -104,5 +104,10 @@
<include refid="dynamicWhereConditions"/>
</select>


<update id="offlineScan" parameterType="java.util.Date">
update wx_device set `online_status` = 0
where `status` = 0
and `online_status` = 1
and `last_hb_time` &lt; #{expiredTime}
</update>
</mapper>

Загрузка…
Отмена
Сохранить