@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;
}