@Data @TableName("im_notice_details") @ApiModel(value = "入库单据明细") @EqualsAndHashCode(of = {"detailsId", "noticeId"}) public class ImNoticeDetails extends Model<ImNoticeDetails> { private static final long serialVersionUID = 1L; @TableId(type = IdType.ASSIGN_ID) @ApiModelProperty(value = "明细ID") private String detailsId; @ApiModelProperty(value = "单据ID") private String noticeId; @ApiModelProperty(value = "商品ID") private String goodsId; ...... }
@Override @Transactional(rollbackFor = Exception.class) public Boolean updateNotice(ImNoticeDto dto) { try { List<ImNoticeDetails> detailsList = dto.getDetailsList(); // 获取oldList与newList的交差 List<ImNoticeDetails> oldDetailList = baseMapper.listOldDetail(dto.getNoticeId()); oldDetailList.removeAll(detailsList); // 删除库存数据及中间表数据 Set<String> hasDeleteIds = oldDetailList.stream().map(item -> item.getDetailsId()).collect(Collectors.toSet()); imNoticeDetailsService.removeByIds(hasDeleteIds); for (ImNoticeDetails imNoticeDetails : detailsList) { imNoticeDetails.setNoticeId(dto.getNoticeId()); imNoticeDetailsService.saveOrUpdate(imNoticeDetails); } } catch (Exception e) { e.printStackTrace(); log.info("更新入库单据失败!!!"); return Boolean.FALSE; } return Boolean.TRUE; }