liuguijing 2 years ago
commit 37cbdcbde8

@ -20,4 +20,8 @@ public class LineAndDyNameDto {
private Integer status;
private Integer dyId;
private Integer dyValue;
}

@ -45,6 +45,8 @@ public class TerminalsWithHeart implements Serializable {
private Long lastheartbeat;
private Integer onlinestatus;
private static final long serialVersionUID = 1L;
}

@ -3,6 +3,7 @@ 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;
@ -48,4 +49,6 @@ public interface TerminalsDao {
int updateCmd(TerminalIdUpdateVo vo);
List<TerminalStatus> getTerminalStatus(@Param("list")List<Terminals> list);
}

@ -18,6 +18,8 @@
<result column="dy_level_id" jdbcType="INTEGER" property="dyLevelId"/>
<result column="dy_level_name" jdbcType="INTEGER" property="dyLevelName"/>
<result column="status" jdbcType="INTEGER" property="status"/>
<result column="dy_id" jdbcType="INTEGER" property="dyId"/>
<result column="dy_value" jdbcType="INTEGER" property="dyValue"/>
</resultMap>
<sql id="Base_Column_List">
@ -30,7 +32,9 @@
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.name as dy_level_name,
y.dy_value as dy_value,
y.id as dy_id
from `lines` x,
dy_level y
where x.dy_level_id = y.id

@ -56,6 +56,7 @@
where a.term_id = b.id and b.cmdid = #{cmdid}
</select>
<select id="selectAll" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>

@ -506,4 +506,15 @@
set cmdid = #{newCmdId,jdbcType=VARCHAR}
where cmdid = #{cmdId,jdbcType=VARCHAR}
</update>
<select id="getTerminalStatus" resultType="com.shxy.xymanager_common.entity.TerminalStatus">
select
term_id as termId,
last_heartbeat as lastHeartbeat
from terminal_status
where term_id in
<foreach collection="list" item="item" index="index" open="(" close=")" separator=",">
#{item.id}
</foreach>
</select>
</mapper>

@ -16,6 +16,7 @@ public class XyCache {
@PostConstruct
public void init() {
//系统启动中。。。加载codeMap
cacheService.updateDyMap();
cacheService.updateLineMap();

@ -1,5 +1,6 @@
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;
@ -7,18 +8,16 @@ 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;
/**
@ -50,6 +49,9 @@ public class CacheServiceImpl implements CacheService {
@Autowired
TerminalImgAlarmParamsDao terminalImgAlarmParamsDao;
@Autowired
TerminalStatusDao terminalStatusDao;
// @Override
// @Cacheable(value = "globalParams", key = "#param")
// public GlobalParams getGlobalParams(String param) {
@ -290,6 +292,28 @@ public class CacheServiceImpl implements CacheService {
return lineMap;
}
@Override
@Cacheable(value = "dyMap")
public Map<Integer,List<LineAndDyNameDto>> getDyMap() {
Map<Integer, List<LineAndDyNameDto>> lineMap;
List<LineAndDyNameDto> lineAndDyNameDtos = linesDao.selectAll(CommonStatus.EFFECTIVE.value());
lineMap = lineAndDyNameDtos.stream().collect(Collectors.groupingBy(LineAndDyNameDto::getDyId));
return lineMap;
}
@Override
@CachePut(value = "dyMap")
public Map<Integer, List<LineAndDyNameDto>> updateDyMap() {
Map<Integer, List<LineAndDyNameDto>> lineMap;
List<LineAndDyNameDto> lineAndDyNameDtos = linesDao.selectAll(CommonStatus.EFFECTIVE.value());
lineMap = lineAndDyNameDtos.stream().collect(Collectors.groupingBy(LineAndDyNameDto::getDyId));
return lineMap;
}
@Override
@CachePut(value = "globalMap")

@ -5,10 +5,13 @@ 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.DyLineAndTerminalWithHeartDto;
import com.shxy.xymanager_common.dto.*;
import com.shxy.xymanager_common.entity.DyLevel;
import com.shxy.xymanager_common.dto.TerminalsWithHeart;
import com.shxy.xymanager_common.entity.TerminalStatus;
import com.shxy.xymanager_common.entity.Terminals;
import com.shxy.xymanager_common.enums.CommonStatus;
import com.shxy.xymanager_common.exception.Asserts;
import com.shxy.xymanager_common.model.DyLineTreeListModel;
@ -16,6 +19,9 @@ import com.shxy.xymanager_common.model.DyListModel;
import com.shxy.xymanager_common.util.MyDateUtils;
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;
@ -25,6 +31,8 @@ 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;
/**
*
@ -39,6 +47,12 @@ public class DyLevelServiceImpl implements DyLevelService {
@Value("${heart.time}")
public Integer hearttime;
@Autowired
CacheService cacheService;
@Autowired
private TerminalsDao terminalsDao;
/**
* 线
*
@ -47,13 +61,15 @@ public class DyLevelServiceImpl implements DyLevelService {
@Override
public ServiceBody<DyLineTreeListModel> getdyTreeList() {
DyLineTreeListModel model = new DyLineTreeListModel();
List<DyLineAndTerminalWithHeartDto> list = dyLevelDao.selectTreeList(CommonStatus.EFFECTIVE.value());
/*List<DyLineAndTerminalWithHeartDto> list = dyLevelDao.selectTreeList(CommonStatus.EFFECTIVE.value());*/
List<DyLineAndTerminalWithHeartDto> list = Lists.newArrayList();
getDyList(list);
boolean empty = CollectionUtil.isEmpty(list);
if (empty) {
model.setList(new ArrayList<>());
} else {
List<DyLineTreeListModel.DyListBean> 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());
@ -73,12 +89,71 @@ public class DyLevelServiceImpl implements DyLevelService {
}
}
}
}
}*/
model.setList(beans);
}
return Asserts.success(model);
}
private void getDyList(List<DyLineAndTerminalWithHeartDto> list) {
List<LineAndTerminalWithHeartDto> lineList = Lists.newArrayList();
Map<Integer, Terminals> terminalsMap = cacheService.getTerminalMap();
List<Terminals> termList = terminalsMap.values().stream().collect(Collectors.toList());
Map<Integer, TerminalStatus> statusMap = Maps.newHashMap();
List<TerminalStatus> terminalStatusDtos = terminalsDao.getTerminalStatus(termList);
for (TerminalStatus status : terminalStatusDtos) {
statusMap.put(status.getTermId(), status);
}
Map<Integer, TowerDto> towerMap = cacheService.getTowerMap();
List<TowerDto> towerList = towerMap.values().stream().collect(Collectors.toList());
Map<Integer, TowerDto> 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<Integer, List<Terminals>> termByLineIdMap = termList.stream().collect(Collectors.groupingBy(Terminals::getLineid));
Map<Integer, List<LineAndDyNameDto>> 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<TerminalsWithHeart> 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);
});
}
/**
*

@ -4,9 +4,6 @@ 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;
@ -112,4 +109,11 @@ public interface CacheService {
Map<Integer, Terminals> updateTerminalMap();
Map<Integer, LineAndDyNameDto> updateLineMap();
Map<Integer,List<LineAndDyNameDto>> updateDyMap();
Map<Integer,List<LineAndDyNameDto>> getDyMap();
}

Loading…
Cancel
Save