diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/entity/Terminals.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/entity/Terminals.java index d7045c8..07f98c1 100644 --- a/xymanager_common/src/main/java/com/shxy/xymanager_common/entity/Terminals.java +++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/entity/Terminals.java @@ -41,6 +41,8 @@ public class Terminals implements Serializable { private Date updateTime; + private Long lastheartbeat; + private static final long serialVersionUID = 1L; } \ No newline at end of file diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/model/DyLineTreeListModel.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/model/DyLineTreeListModel.java index ccf396f..e8042ec 100644 --- a/xymanager_common/src/main/java/com/shxy/xymanager_common/model/DyLineTreeListModel.java +++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/model/DyLineTreeListModel.java @@ -69,6 +69,9 @@ public class DyLineTreeListModel implements Serializable { @ApiModelProperty(value = "装置型号", example = "型号型号") private String model; + @ApiModelProperty(value = "在线状态", example = "0--掉线1--在线") + private Integer onlinestatus; + } } diff --git a/xymanager_dao/src/main/resources/mappers/DyLevelDao.xml b/xymanager_dao/src/main/resources/mappers/DyLevelDao.xml index 02a6099..5c2e7d1 100644 --- a/xymanager_dao/src/main/resources/mappers/DyLevelDao.xml +++ b/xymanager_dao/src/main/resources/mappers/DyLevelDao.xml @@ -26,6 +26,7 @@ + @@ -61,9 +62,11 @@ y.cmdid as cmdid, y.equip_name as equip_name, y.display_name as display_name, - y.model as model - from ((dy_level z join `lines` x on z.id = x.dy_level_id and x.status = #{status} and z.status = #{status}) - join terminals y on x.id = y.line_id and y.status = #{status}) + y.model as model, + f.last_heartbeat as last_heartbeat + from (((dy_level z left join `lines` x on z.id = x.dy_level_id and x.status = #{status} and z.status = #{status}) + left join terminals y on x.id = y.line_id and y.status = #{status}) + left join terminal_status f on f.term_id = y.id) diff --git a/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/DyLevelServiceImpl.java b/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/DyLevelServiceImpl.java index f41c3db..cb428c9 100644 --- a/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/DyLevelServiceImpl.java +++ b/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/DyLevelServiceImpl.java @@ -2,6 +2,8 @@ package com.shxy.xymanager_service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUnit; import com.shxy.xymanager_common.bean.ServiceBody; import com.shxy.xymanager_common.dto.DyLineAndTerminalDto; import com.shxy.xymanager_common.entity.DyLevel; @@ -10,6 +12,7 @@ import com.shxy.xymanager_common.enums.CommonStatus; import com.shxy.xymanager_common.exception.Asserts; import com.shxy.xymanager_common.model.DyLineTreeListModel; import com.shxy.xymanager_common.model.DyListModel; +import com.shxy.xymanager_common.util.MyDateUtils; import com.shxy.xymanager_common.vo.TerminalIdVo; import com.shxy.xymanager_dao.dao.DyLevelDao; import com.shxy.xymanager_service.service.DyLevelService; @@ -17,6 +20,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.math.BigInteger; import java.util.ArrayList; import java.util.List; @@ -48,6 +52,15 @@ public class DyLevelServiceImpl implements DyLevelService { for (int j = 0; j < beans.get(i).getList().size(); j++) { for (int k = 0; k < beans.get(i).getList().get(j).getList().size(); k++) { beans.get(i).getList().get(j).getList().get(k).setName(list.get(i).getList().get(j).getList().get(k).getDisplayName()); + Long lastheartbeat = list.get(i).getList().get(j).getList().get(k).getLastheartbeat(); + BigInteger time = MyDateUtils.TimeSecond2MillSecond(lastheartbeat); + DateTime date = MyDateUtils.date(time.longValue()); + long between = MyDateUtils.between(MyDateUtils.getNowDate(), date, DateUnit.MINUTE); + if (between > 30) { + beans.get(i).getList().get(j).getList().get(k).setOnlinestatus(CommonStatus.DELETE.value()); + } else { + beans.get(i).getList().get(j).getList().get(k).setOnlinestatus(CommonStatus.EFFECTIVE.value()); + } } } }