zoukankan      html  css  js  c++  java
  • 子表批量保存CRUD

    @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;
        }
  • 相关阅读:
    Tomcat安装和使用
    mysql5.7.18安装配置
    Memcached安装与使用
    Redis
    nginx的安装与使用
    python操作mysql
    Paramiko模块
    协程与异步IO
    Queue与生产者消费者模型
    C# 生成验证码 方法二
  • 原文地址:https://www.cnblogs.com/fangts/p/13729612.html
Copyright © 2011-2022 走看看