diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/dto/LineAndDyNameDto.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/dto/LineAndDyNameDto.java index 435b55f..1023199 100644 --- a/xymanager_common/src/main/java/com/shxy/xymanager_common/dto/LineAndDyNameDto.java +++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/dto/LineAndDyNameDto.java @@ -20,8 +20,4 @@ public class LineAndDyNameDto { private Integer status; - private Integer dyId; - - private Integer dyValue; - } diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/dto/TerminalsWithHeart.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/dto/TerminalsWithHeart.java index 52086c1..8db04a4 100644 --- a/xymanager_common/src/main/java/com/shxy/xymanager_common/dto/TerminalsWithHeart.java +++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/dto/TerminalsWithHeart.java @@ -3,6 +3,7 @@ package com.shxy.xymanager_common.dto; import lombok.Data; import java.io.Serializable; +import java.math.BigInteger; import java.util.Date; @Data @@ -43,9 +44,7 @@ public class TerminalsWithHeart implements Serializable { private Date updateTime; - private Long lastheartbeat; - - private Integer onlinestatus; + private BigInteger lastheartbeat; private static final long serialVersionUID = 1L; 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 9488c57..5eb5610 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 @@ -3,6 +3,7 @@ package com.shxy.xymanager_common.entity; import lombok.Data; import java.io.Serializable; +import java.math.BigInteger; import java.util.Date; @Data @@ -41,7 +42,7 @@ public class Terminals implements Serializable { private Date updateTime; - private Long lastheartbeat; + private BigInteger lastheartbeat; private Integer onlinestatus; diff --git a/xymanager_dao/src/main/java/com/shxy/xymanager_dao/dao/TerminalsDao.java b/xymanager_dao/src/main/java/com/shxy/xymanager_dao/dao/TerminalsDao.java index 5e2fb1e..69953cc 100644 --- a/xymanager_dao/src/main/java/com/shxy/xymanager_dao/dao/TerminalsDao.java +++ b/xymanager_dao/src/main/java/com/shxy/xymanager_dao/dao/TerminalsDao.java @@ -3,7 +3,6 @@ package com.shxy.xymanager_dao.dao; import com.shxy.xymanager_common.dto.ChannelAndTermDto; import com.shxy.xymanager_common.dto.TerminalInfoDto; import com.shxy.xymanager_common.dto.TerminalsAndStatusDto; -import com.shxy.xymanager_common.entity.TerminalStatus; import com.shxy.xymanager_common.entity.Terminals; import com.shxy.xymanager_common.vo.RelateTerminalListRuleIdVo; import com.shxy.xymanager_common.vo.TerminalIdUpdateVo; @@ -49,6 +48,4 @@ public interface TerminalsDao { int updateCmd(TerminalIdUpdateVo vo); - List getTerminalStatus(@Param("list")List list); - } \ No newline at end of file diff --git a/xymanager_dao/src/main/resources/mappers/LinesDao.xml b/xymanager_dao/src/main/resources/mappers/LinesDao.xml index 2377ea5..3cbcc0e 100644 --- a/xymanager_dao/src/main/resources/mappers/LinesDao.xml +++ b/xymanager_dao/src/main/resources/mappers/LinesDao.xml @@ -18,8 +18,6 @@ - - @@ -32,9 +30,7 @@ x.bs_manufacturer as bs_manufacturer, x.dy_level_id as dy_level_id, x.status as status, - y.name as dy_level_name, - y.dy_value as dy_value, - y.id as dy_id + y.name as dy_level_name from `lines` x, dy_level y where x.dy_level_id = y.id diff --git a/xymanager_dao/src/main/resources/mappers/TerminalStatusDao.xml b/xymanager_dao/src/main/resources/mappers/TerminalStatusDao.xml index d2c902f..f8c39f4 100644 --- a/xymanager_dao/src/main/resources/mappers/TerminalStatusDao.xml +++ b/xymanager_dao/src/main/resources/mappers/TerminalStatusDao.xml @@ -56,7 +56,6 @@ where a.term_id = b.id and b.cmdid = #{cmdid} - - select - term_id as termId, - last_heartbeat as lastHeartbeat - from terminal_status - where term_id in - - #{item.id} - - \ No newline at end of file diff --git a/xymanager_service/src/main/java/com/shxy/xymanager_service/cache/XyCache.java b/xymanager_service/src/main/java/com/shxy/xymanager_service/cache/XyCache.java index 0f92062..3f6edf2 100644 --- a/xymanager_service/src/main/java/com/shxy/xymanager_service/cache/XyCache.java +++ b/xymanager_service/src/main/java/com/shxy/xymanager_service/cache/XyCache.java @@ -16,7 +16,7 @@ public class XyCache { @PostConstruct public void init() { //系统启动中。。。加载codeMap - cacheService.updateDyMap(); +// cacheService.updateDyMap(); cacheService.updateLineMap(); diff --git a/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/CacheServiceImpl.java b/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/CacheServiceImpl.java index 295a35e..297da12 100644 --- a/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/CacheServiceImpl.java +++ b/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/CacheServiceImpl.java @@ -1,6 +1,5 @@ package com.shxy.xymanager_service.impl; -import com.google.common.collect.Maps; import com.shxy.xymanager_common.dto.LineAndDyNameDto; import com.shxy.xymanager_common.dto.TermAndChannelDto; import com.shxy.xymanager_common.dto.TowerDto; @@ -8,16 +7,18 @@ import com.shxy.xymanager_common.entity.*; import com.shxy.xymanager_common.enums.CommonStatus; import com.shxy.xymanager_dao.dao.*; import com.shxy.xymanager_service.service.CacheService; +import io.swagger.models.auth.In; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.CachePut; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; +import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.stream.Collectors; /** @@ -49,9 +50,6 @@ public class CacheServiceImpl implements CacheService { @Autowired TerminalImgAlarmParamsDao terminalImgAlarmParamsDao; - @Autowired - TerminalStatusDao terminalStatusDao; - // @Override // @Cacheable(value = "globalParams", key = "#param") // public GlobalParams getGlobalParams(String param) { @@ -292,28 +290,6 @@ public class CacheServiceImpl implements CacheService { return lineMap; } - @Override - @Cacheable(value = "dyMap") - public Map> getDyMap() { - Map> lineMap; - List lineAndDyNameDtos = linesDao.selectAll(CommonStatus.EFFECTIVE.value()); - lineMap = lineAndDyNameDtos.stream().collect(Collectors.groupingBy(LineAndDyNameDto::getDyId)); - return lineMap; - } - - - @Override - @CachePut(value = "dyMap") - public Map> updateDyMap() { - Map> lineMap; - List lineAndDyNameDtos = linesDao.selectAll(CommonStatus.EFFECTIVE.value()); - lineMap = lineAndDyNameDtos.stream().collect(Collectors.groupingBy(LineAndDyNameDto::getDyId)); - return lineMap; - } - - - - @Override @CachePut(value = "globalMap") 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 1e3ee26..db83e6a 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 @@ -5,23 +5,18 @@ import cn.hutool.core.bean.copier.CopyOptions; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUnit; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; import com.shxy.xymanager_common.bean.ServiceBody; -import com.shxy.xymanager_common.dto.*; +import com.shxy.xymanager_common.dto.DyLineAndTerminalWithHeartDto; import com.shxy.xymanager_common.entity.DyLevel; -import com.shxy.xymanager_common.entity.TerminalStatus; -import com.shxy.xymanager_common.entity.Terminals; +import com.shxy.xymanager_common.dto.TerminalsWithHeart; 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.util.TerminalUtils; import com.shxy.xymanager_common.vo.TestVo; import com.shxy.xymanager_dao.dao.DyLevelDao; -import com.shxy.xymanager_dao.dao.TerminalStatusDao; -import com.shxy.xymanager_dao.dao.TerminalsDao; -import com.shxy.xymanager_service.service.CacheService; import com.shxy.xymanager_service.service.DyLevelService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -31,8 +26,6 @@ import org.springframework.stereotype.Service; import java.math.BigInteger; import java.util.ArrayList; import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; /** * 装置通道实现层 @@ -44,15 +37,6 @@ public class DyLevelServiceImpl implements DyLevelService { @Autowired DyLevelDao dyLevelDao; - @Value("${heart.time}") - public Integer hearttime; - - @Autowired - CacheService cacheService; - - @Autowired - private TerminalsDao terminalsDao; - /** * 获取电压线路树状接口 * @@ -61,99 +45,31 @@ public class DyLevelServiceImpl implements DyLevelService { @Override public ServiceBody getdyTreeList() { DyLineTreeListModel model = new DyLineTreeListModel(); - /*List list = dyLevelDao.selectTreeList(CommonStatus.EFFECTIVE.value());*/ - List list = Lists.newArrayList(); - getDyList(list); + List list = dyLevelDao.selectTreeList(CommonStatus.EFFECTIVE.value()); boolean empty = CollectionUtil.isEmpty(list); if (empty) { model.setList(new ArrayList<>()); } else { List beans = BeanUtil.copyToList(list, DyLineTreeListModel.DyListBean.class, CopyOptions.create().ignoreCase()); - /*for (int i = 0; i < beans.size(); i++) { + for (int i = 0; i < beans.size(); i++) { 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()); TerminalsWithHeart terminalsWithHeart = list.get(i).getList().get(j).getList().get(k); - if (!BeanUtil.isEmpty(terminalsWithHeart)) { - Long lastheartbeat = terminalsWithHeart.getLastheartbeat(); - if (!BeanUtil.isEmpty(lastheartbeat)) { - long time = MyDateUtils.TimeSecond2MillSecond(lastheartbeat); - DateTime date = MyDateUtils.date(time); - long between = MyDateUtils.between(MyDateUtils.getNowDate(), date, DateUnit.MINUTE); - if (between > hearttime) { - 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()); - } - } + BigInteger lastheartbeat = terminalsWithHeart.getLastheartbeat(); + boolean b = TerminalUtils.judgeTerminalStatus(lastheartbeat); + if (b) { + 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()); } } } - }*/ + } model.setList(beans); } return Asserts.success(model); } - private void getDyList(List list) { - List lineList = Lists.newArrayList(); - Map terminalsMap = cacheService.getTerminalMap(); - List termList = terminalsMap.values().stream().collect(Collectors.toList()); - Map statusMap = Maps.newHashMap(); - List terminalStatusDtos = terminalsDao.getTerminalStatus(termList); - for (TerminalStatus status : terminalStatusDtos) { - statusMap.put(status.getTermId(), status); - } - - - Map towerMap = cacheService.getTowerMap(); - List towerList = towerMap.values().stream().collect(Collectors.toList()); - Map towerByLineMap = Maps.newHashMap(); - for (TowerDto item : towerList) { - towerByLineMap.put(item.getLineId(), item); - } - termList.stream().forEach(var->{ - if(null!=statusMap.get(var.getId())&&null!=statusMap.get(var.getId()).getLastHeartbeat()) { - long time = MyDateUtils.TimeSecond2MillSecond(statusMap.get(var.getId()).getLastHeartbeat().longValue()); - DateTime date = MyDateUtils.date(time); - long between = MyDateUtils.between(MyDateUtils.getNowDate(), date, DateUnit.MINUTE); - if (between > hearttime) { - var.setOnlinestatus(CommonStatus.DELETE.value()); - } else { - var.setOnlinestatus(CommonStatus.EFFECTIVE.value()); - } - var.setLastheartbeat(statusMap.get(var.getId()).getLastHeartbeat().longValue()); - } - if(null!=towerByLineMap.get(var.getLineid())) { - var.setTowerid(towerByLineMap.get(var.getLineid()).getId()); - } - }); - Map> termByLineIdMap = termList.stream().collect(Collectors.groupingBy(Terminals::getLineid)); - Map> map = cacheService.getDyMap(); - map.forEach((key, value) -> { - DyLineAndTerminalWithHeartDto dyDto = new DyLineAndTerminalWithHeartDto(); - dyDto.setId(key); - dyDto.setName(value.get(0).getName()); - dyDto.setDyValue(value.get(0).getDyValue()); - for(LineAndDyNameDto line:value) { - List terminalList = Lists.newArrayList(); - if(null!=termByLineIdMap.get(line.getId())) { - terminalList = BeanUtil.copyToList(termByLineIdMap.get(line.getId()), TerminalsWithHeart.class, CopyOptions.create().ignoreCase()); - } - LineAndTerminalWithHeartDto lineDto = new LineAndTerminalWithHeartDto(); - lineDto.setBsManufacturer(line.getBsManufacturer()); - lineDto.setDyLevel(line.getDyLevelId()); - lineDto.setName(line.getName()); - lineDto.setId(line.getId()); - lineDto.setList(terminalList); - lineList.add(lineDto); - } - dyDto.setList(lineList); - list.add(dyDto); - }); - } - - /** * 获取电压等级列表 diff --git a/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/OpenServiceImpl.java b/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/OpenServiceImpl.java index 27d1c00..cfa82ea 100644 --- a/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/OpenServiceImpl.java +++ b/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/OpenServiceImpl.java @@ -15,6 +15,7 @@ import com.shxy.xymanager_common.enums.CommonStatus; import com.shxy.xymanager_common.util.CmaUtil; import com.shxy.xymanager_common.util.MyDateUtils; import com.shxy.xymanager_common.util.ProcessExecUtils; +import com.shxy.xymanager_common.util.TerminalUtils; import com.shxy.xymanager_common.vo.OpenCmdidVo; import com.shxy.xymanager_common.vo.OpenDeviceCaptureVo; import com.shxy.xymanager_common.vo.UserLoginVo; @@ -55,9 +56,6 @@ public class OpenServiceImpl implements OpenService { @Value("${session.open_expire_time}") public Integer time; - @Value("${heart.time}") - public Integer hearttime; - /** * 登录鉴权 * @@ -213,11 +211,9 @@ public class OpenServiceImpl implements OpenService { jsonObject.set("errmsg", "device not register"); return jsonObject; } - Long lastheartbeat = terminalsWithHeart.getLastheartbeat(); - long time = MyDateUtils.TimeSecond2MillSecond(lastheartbeat); - DateTime date = MyDateUtils.date(time); - long between = MyDateUtils.between(MyDateUtils.getNowDate(), date, DateUnit.MINUTE); - if (between > hearttime) { + BigInteger lastheartbeat = terminalsWithHeart.getLastheartbeat(); + boolean b = TerminalUtils.judgeTerminalStatus(lastheartbeat); + if (b) { jsonObject.set("isonline", false); jsonObject.set("errcode", 0); jsonObject.set("errmsg", "ok"); diff --git a/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/TerminalPhotoServiceImpl.java b/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/TerminalPhotoServiceImpl.java index c001764..f1b3c1d 100644 --- a/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/TerminalPhotoServiceImpl.java +++ b/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/TerminalPhotoServiceImpl.java @@ -76,8 +76,6 @@ public class TerminalPhotoServiceImpl implements TerminalPhotoService { @Value("${video.address}") private String videoaddress; - @Value("${heart.time}") - public Integer hearttime; /** * 根据装置id和通道id获取图片 diff --git a/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/TerminalServiceImpl.java b/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/TerminalServiceImpl.java index 54cd6b3..a913583 100644 --- a/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/TerminalServiceImpl.java +++ b/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/TerminalServiceImpl.java @@ -10,7 +10,6 @@ import com.github.pagehelper.PageInfo; import com.shxy.xymanager_common.bean.ServiceBody; import com.shxy.xymanager_common.constant.Constants; import com.shxy.xymanager_common.dto.*; -import com.shxy.xymanager_common.entity.Lines; import com.shxy.xymanager_common.entity.TerminalChannelMapper; import com.shxy.xymanager_common.entity.TerminalStatus; import com.shxy.xymanager_common.entity.Terminals; @@ -75,9 +74,6 @@ public class TerminalServiceImpl implements TerminalService { @Value("${photo.address}") private String photoaddress; - @Value("${heart.time}") - public Integer hearttime; - /** * 获取所有设备列表 @@ -100,12 +96,12 @@ public class TerminalServiceImpl implements TerminalService { tower = null; } else { if (lineid == null || lineid.intValue() == -1) { - dyLineAndTowertDtos = dyLevelDao.selectDyAndLineAndTowerList(dyid, null, null,search); + dyLineAndTowertDtos = dyLevelDao.selectDyAndLineAndTowerList(dyid, null, null, search); } else { if (tower == null || tower.intValue() == -1) { - dyLineAndTowertDtos = dyLevelDao.selectDyAndLineAndTowerList(dyid, lineid, null,search); + dyLineAndTowertDtos = dyLevelDao.selectDyAndLineAndTowerList(dyid, lineid, null, search); } else { - dyLineAndTowertDtos = dyLevelDao.selectDyAndLineAndTowerList(dyid, lineid, tower,search); + dyLineAndTowertDtos = dyLevelDao.selectDyAndLineAndTowerList(dyid, lineid, tower, search); } } } @@ -120,9 +116,9 @@ public class TerminalServiceImpl implements TerminalService { for (DyLineAndTowertDto item : dyLineAndTowertDtos) { toweridlist.add(item.getTowerId()); } - list2 = terminalsDao.selectTermAndStatusList(null, toweridlist,search); + list2 = terminalsDao.selectTermAndStatusList(null, toweridlist, search); } else { - list2 = terminalsDao.selectTermAndStatusList(null, null,search); + list2 = terminalsDao.selectTermAndStatusList(null, null, search); } boolean empty = CollectionUtil.isEmpty(list2); if (empty) { @@ -390,19 +386,13 @@ public class TerminalServiceImpl implements TerminalService { list.stream().forEach(var -> { var.getList().forEach(item -> { item.getList().forEach(terminalsWithHeart -> { - Long lastheartbeat = terminalsWithHeart.getLastheartbeat(); - if (!BeanUtil.isEmpty(lastheartbeat)) { - long time = MyDateUtils.TimeSecond2MillSecond(lastheartbeat); - DateTime date = MyDateUtils.date(time); - long between = MyDateUtils.between(MyDateUtils.getNowDate(), date, DateUnit.MINUTE); - if (between > hearttime) { - terminalsWithHeart.setOnlinestatus(CommonStatus.DELETE.value()); - } else { - terminalsWithHeart.setOnlinestatus(CommonStatus.EFFECTIVE.value()); - } + BigInteger lastheartbeat = terminalsWithHeart.getLastheartbeat(); + boolean b = TerminalUtils.judgeTerminalStatus(lastheartbeat); + if (b) { + terminalsWithHeart.setOnlinestatus(CommonStatus.DELETE.value()); + } else { + terminalsWithHeart.setOnlinestatus(CommonStatus.EFFECTIVE.value()); } - - }); }); }); diff --git a/xymanager_service/src/main/java/com/shxy/xymanager_service/service/CacheService.java b/xymanager_service/src/main/java/com/shxy/xymanager_service/service/CacheService.java index 1cce1a4..3cf48c4 100644 --- a/xymanager_service/src/main/java/com/shxy/xymanager_service/service/CacheService.java +++ b/xymanager_service/src/main/java/com/shxy/xymanager_service/service/CacheService.java @@ -4,6 +4,9 @@ import com.shxy.xymanager_common.dto.LineAndDyNameDto; import com.shxy.xymanager_common.dto.TermAndChannelDto; import com.shxy.xymanager_common.dto.TowerDto; import com.shxy.xymanager_common.entity.*; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.CachePut; +import org.springframework.cache.annotation.Cacheable; import java.util.List; import java.util.Map; @@ -109,11 +112,4 @@ public interface CacheService { Map updateTerminalMap(); Map updateLineMap(); - - - Map> updateDyMap(); - - - Map> getDyMap(); - }