List<ApparatusUsageDetailDTO> useDetailAll = usageService.findUseDetailAll(id, "");
if (null == useDetailAll || useDetailAll.isEmpty()) {
return;
}
Map<Short, List<ApparatusUsageDetailDTO>> listMap = useDetailAll.stream().collect(Collectors.groupingBy(ApparatusUsageDetailDTO::getType, Collectors.toList()));
List<ApparatusUsageDetailDTO> data = new ArrayList<>();
List<ApparatusUsageDetailDTO> useApparatus = listMap.get((short) 1).stream().sorted(Comparator.comparing(ApparatusUsageDetailDTO::getId).reversed()).collect(Collectors.toList());
List<ApparatusUsageDetailDTO> returnApparatus = listMap.get((short) 2).stream().sorted(Comparator.comparing(ApparatusUsageDetailDTO::getId).reversed()).collect(Collectors.toList());
Iterator<ApparatusUsageDetailDTO> useApparatusIterator = useApparatus.iterator();
Iterator<ApparatusUsageDetailDTO> returnDetailIterator = returnApparatus.iterator();
while (returnDetailIterator.hasNext()) {
ApparatusUsageDetailDTO returnDetail = returnDetailIterator.next();
String apparatusNumber = returnDetail.getApparatusNumber();
Date backDate = returnDetail.getBackDate();
while (useApparatusIterator.hasNext()) {
ApparatusUsageDetailDTO usageDetail = useApparatusIterator.next();
if (usageDetail.getApparatusNumber().equalsIgnoreCase(apparatusNumber)
&& backDate.after(usageDetail.getUsageDate())) {
usageDetail.setBackDate(returnDetail.getBackDate());
usageDetail.setBackName(returnDetail.getBackName());
data.add(usageDetail);
useApparatusIterator.remove();
returnDetailIterator.remove();
break;
}
}
}
data.addAll(useApparatus);
List<ApparatusUsageDetailDTO> collect = data.stream().sorted(Comparator.comparing(ApparatusUsageDetailDTO::getId).reversed()).collect(Collectors.toList());
try {
ExcelUtil.writeExcel(response, collect, "仪器设备出入库登记表", "仪器设备出入库登记表", ApparatusUsageDetailDTO.class);
} catch (Exception e) {
log.error("仪器设备出入库登记表导出接口异常", e);
}