Browse Source

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

release_toaliyun_real
hupeng 6 years ago
parent
commit
024a02b014
9 changed files with 46 additions and 31 deletions
  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 View File

@@ -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 View File

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




+ 14
- 28
mallinkSchedule/src/main/java/com/iformall/schedule/DeviceHbCheckSchedule.java View File

@@ -1,12 +1,11 @@
package com.iformall.schedule; 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.mapper.WxDeviceMapper;


import com.iformall.service.WxDeviceService;


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


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




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


@Autowired
KwBoxMapper kwBoxMapper;

@Autowired
KwMeterMapper kwMeterMapper;

@Scheduled(cron = "0 */5 * * * *?") // 每5分钟检查一次 @Scheduled(cron = "0 */5 * * * *?") // 每5分钟检查一次
//@Scheduled(cron = "*/10 * * * * ?") // 测试10秒中一次 //@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 View File

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


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


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


public interface KwBoxMapper extends CommonMapper<KwBox, Long> { public interface KwBoxMapper extends CommonMapper<KwBox, Long> {


List<KwBox> findList(KwBox param); List<KwBox> findList(KwBox param);


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

+ 2
- 0
mallinkService/src/main/java/com/iformall/mapper/KwMeterMapper.java View File

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


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


public interface KwMeterMapper extends CommonMapper<KwMeter, Long> { 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 unbind(@Param("meterId")Long meterId);
int unbindBatch(@Param("boxId")Long boxId); int unbindBatch(@Param("boxId")Long boxId);


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

+ 3
- 1
mallinkService/src/main/java/com/iformall/mapper/WxDeviceMapper.java View File

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


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


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


public interface WxDeviceMapper extends CommonMapper<WxDevice, Long> { public interface WxDeviceMapper extends CommonMapper<WxDevice, Long> {


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

+ 7
- 0
mallinkService/src/main/resources/mapper/KwBoxMapper.xml View File

@@ -78,4 +78,11 @@
</select> </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> </mapper>

+ 7
- 0
mallinkService/src/main/resources/mapper/KwMeterMapper.xml View File

@@ -145,4 +145,11 @@
where `id` = #{id} where `id` = #{id}
</update> </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> </mapper>

+ 6
- 1
mallinkService/src/main/resources/mapper/WxDeviceMapper.xml View File

@@ -104,5 +104,10 @@
<include refid="dynamicWhereConditions"/> <include refid="dynamicWhereConditions"/>
</select> </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> </mapper>

Loading…
Cancel
Save