1️⃣ Criar sets de idSubitem
Set<Long> idsBanco = listaManutencaoItem.stream()
.map(ItemSubitemVO::getIdSubitem)
.collect(Collectors.toSet());
Set<Long> idsRequest = retornoManutencaoRequestVO.getManutencaoRetornoItensVO()
.stream()
.map(ManutencaoRetornoItemVO::getIdSubitem)
.collect(Collectors.toSet());
➕ Novos registros (inserir)
List<ManutencaoRetornoItemVO> novos = retornoManutencaoRequestVO.getManutencaoRetornoItensVO()
.stream()
.filter(vo -> !idsBanco.contains(vo.getIdSubitem()))
.collect(Collectors.toList());
➖ Removidos (excluir do banco)
List<ItemSubitemVO> removidos = listaManutencaoItem.stream()
.filter(vo -> !idsRequest.contains(vo.getIdSubitem()))
.collect(Collectors.toList());
🔄 Persistindo
for (ManutencaoRetornoItemVO vo : novos) {
manutencaoRetornoItemRepository.save(
ManutencaoRetornoItem.builder()
.manutencaoRetornoItemPK(new ManutencaoRetornoItemPK(idManutencao, vo.getIdSubitem()))
.numeroNotaFiscal(vo.getNumeroNotaFiscal())
.valorNotaFiscal(vo.getValorNotaFiscal())
.build()
);
}
Remover
for (ItemSubitemVO vo : removidos) {
manutencaoRetornoItemRepository.deleteByManutencaoIdAndSubitemId(idManutencao, vo.getIdSubitem());
}
Nenhum comentário:
Postar um comentário