提交 6cc39b29 authored 作者: zhoushaopan's avatar zhoushaopan

fix(装备模块): 修改导入数据的判断条件

修改导入数据的判断条件
上级 ec840e9b
......@@ -1314,54 +1314,43 @@ public class DeviceLibraryServiceImpl implements DeviceLibraryService {
List<DeviceLibrary> deviceLibraries = deviceLibraryDao.findAll(predicateBuilder.build());
//报废 退役 销毁
List<Integer> status = new ArrayList<>(Arrays.asList(5,10,11,12));
deviceLibraries = deviceLibraries.stream().filter(deviceLibrary -> !status.contains(deviceLibrary.getLifeStatus()) && deviceLibrary.getIsPart() == 0).collect(Collectors.toList());
deviceLibraries.forEach(DeviceLibrary::setConfigName);
stopWatch.stop();
log.info("条件查询结果集时间为:{}",stopWatch.getTotalTimeSeconds());
//拿到所有的装备id
StopWatch stopWatch2 = new StopWatch("获取装备id集合");
stopWatch2.start();
List<Integer> deviceIds = deviceLibraries.stream().map(DeviceLibrary::getId).collect(Collectors.toList());
stopWatch2.stop();
log.info("获取装备id集合时间为:{}",stopWatch2.getTotalTimeSeconds());
//3D位置的map
StopWatch stopWatch1 = new StopWatch("查询和拼接");
stopWatch1.start();
Map<Integer, DeviceLibraryPosition> positionMap =
deviceLibraryPositionService.findByDeviceIds(deviceIds).stream().collect(toMap(DeviceLibraryPosition::getDeviceId, Function.identity()));
//取出key 在3d的装备id
// Set<Integer> integers = positionMap.keySet();
//然后就行过滤
// deviceLibraries = deviceLibraries.stream().filter(deviceLibrary -> integers.contains(deviceLibrary.getId()))
// .collect(Collectors.toList());
List<AllVO> allVOS = new ArrayList<>();
deviceLibraryPositionService.findByDeviceIds(deviceIds).stream()
.collect(toMap(DeviceLibraryPosition::getDeviceId, Function.identity()));
List<AllVO> allVOS = new ArrayList<>();
//开始遍历装备
StopWatch stopWatch3 = new StopWatch("开始遍历装备");
stopWatch3.start();
deviceLibraries.forEach(deviceLibrary -> {
AllVO allVO = new AllVO();
//开始赋值
allVO.setDeviceLibrary(deviceLibrary);
DeviceLibraryPosition deviceLibraryPosition = positionMap.getOrDefault(deviceLibrary.getId(),new DeviceLibraryPosition());
if (deviceLibraryPosition != null){
toJson(deviceLibraryPosition);
//TODO 感觉这里可以进行优化 当查询本库房的时候需要转换 查询其他库房的时候不需要进行转换
if(queryTheWarehouseVo.getStorageLocationId() !=null){
if (deviceLibraryPosition != null){
toJson(deviceLibraryPosition);
}
}
allVO.setDeviceLibraryPosition(deviceLibraryPosition);
allVOS.add(allVO);
});
stopWatch3.stop();
log.info("遍历装备时间为:{}",stopWatch3.getTotalTimeSeconds());
//如果是出库 只需要地上的 不出库是全部的
Integer out = queryTheWarehouseVo.getOut();
List<AllVO> pageAllVo = new ArrayList<>();
List<AllVO> pageAllVo;
if (out != null){
//说明要出库 只需要地上的
pageAllVo = allVOS.stream().filter(allVO -> {
......@@ -1374,10 +1363,11 @@ public class DeviceLibraryServiceImpl implements DeviceLibraryService {
}
}).collect(Collectors.toList());
}else {
pageAllVo.addAll(allVOS);
pageAllVo = new ArrayList<>(allVOS);
}
stopWatch1.stop();
log.info("查询和拼接时间:{}",stopWatch1.getTotalTimeMillis()+"ms");
Page<AllVO> allVOPage = PageUtil.getPerPage(queryTheWarehouseVo.getPage(),
queryTheWarehouseVo.getSize(), pageAllVo, queryTheWarehouseVo.getPageable());
//不分页的数据 如果是单个库房 则不需要分页
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论