前端不传被删记录的id怎么删除记录,或子表如何删除记录

1.删除主表相关子表所有记录

2.再保存一次前端传来的记录

3.如果子表是通过先生成空记录,再put修改模式,可以在执行1和2两步后再拿模板集合和当前现有子表集合套两个for循环对比判断,count记录模板记录和子表记录每次循环重合次数,当发送现有子表中没有模板的情况,也就是count==0,就在一层循环再创建一个模板对象,达到效果:原有空记录不会因为进来时全删除的操作而抹去,因为空记录是页面动态效果的一部分

    /**
     * 更新
     *
     * @param documentEntities
     * @return
     */
    @PutMapping("/reference/{projectStageId}/{typeListCode}")
    @Transactional
    @Operation(summary = "更新")
    public ActionResult referenceUpdate(@PathVariable String projectStageId,@RequestBody @Valid List<DocumentListVO> documentEntities ) throws DataException {
        UserInfo userInfo = userProvider.get();
        //删除原有所有记录
        LambdaQueryWrapper<ListDocumentFileEntity> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(ListDocumentFileEntity::getProjectStageId,projectStageId);
        List<ListDocumentFileEntity> list = listDocumentFileService.list(wrapper);
        listDocumentFileService.removeBatchByIds(list);
        //新增此次传来的记录
        for (DocumentListVO drawingListVO : documentEntities) {
            for (DocumentVO documentVO : drawingListVO.getChildren()) {
                ListDocumentFileEntity documentFile = new ListDocumentFileEntity(RandomUtil.uuId(),
                        drawingListVO.getProjectStageId(),drawingListVO.getTypeListCode(),
                        drawingListVO.getFSort(),drawingListVO.getFileType(),null,
                        documentVO.getDocumentNumber(), documentVO.getIssuanceDate(),"0",
                        userInfo.getUserName(), DateTime.now(),null,null,
                        null,documentVO.getFileId(),documentVO.getSequence(),documentVO.getFileName());
                if (listDocumentFileService.getInfo(documentVO.getId())==null){
                    listDocumentFileService.save(documentFile);
                }else {
                    documentFile.setId(documentVO.getId());
                    listDocumentFileService.updateById(documentFile);
                }
            }
        }
        //获取空记录的模板与现在的子表记录对比,如果缺了空记录就补充空记录
        List<ListTemplate1Entity> listByTypeCode = listTemplate1Service.getListByTypeCode(typeListCode);
        List<ListDocumentFileEntity> list2 = listDocumentFileService.list(wrapper);
        for (ListTemplate1Entity listTemplate1Entity : listByTypeCode) {
            int integer = 0;
            for (ListDocumentFileEntity documentFile : list2) {
                if (documentFile.getFileType().equals(listTemplate1Entity.getFileType())){
                    integer++;
                }
            }
            if (integer==0){
                ListDocumentFileEntity listDocumentFileEntity = new ListDocumentFileEntity();
                listDocumentFileEntity.setId(RandomUtil.uuId());
                listDocumentFileEntity.setProjectStageId(projectStageId);
                listDocumentFileEntity.setFileType(listTemplate1Entity.getFileType());
                listDocumentFileEntity.setTypeListCode(listTemplate1Entity.getListTypeCode());
                listDocumentFileEntity.setFSort(listTemplate1Entity.getFSort());
                listDocumentFileEntity.setRemark(listTemplate1Entity.getRemark());
                listDocumentFileEntity.setRequired(listTemplate1Entity.getRequired());
                listDocumentFileService.save(listDocumentFileEntity);
            }
        }
        return ActionResult.success("更新成功");

    }

方法二:

后来想了下直接在第一次的时候判断有没有生成模板的记录,如果没生成就生一个,这样就避免了第二次遍历

    /**
     * 编辑
     *
     * @param documentEntities
     * @return
     */
    @PutMapping("/reference/{projectStageId}")
    @Transactional
    @Operation(summary = "更新")
    public ActionResult referenceUpdate(@PathVariable String projectStageId,@RequestBody @Valid List<DocumentListVO> documentEntities ) throws DataException {
        UserInfo userInfo = userProvider.get();
        //删除原有所有记录
        LambdaQueryWrapper<ListDocumentFileEntity> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(ListDocumentFileEntity::getProjectStageId,projectStageId);
        List<ListDocumentFileEntity> list = listDocumentFileService.list(wrapper);
        listDocumentFileService.removeBatchByIds(list);
        //新增此次传来的记录
        for (DocumentListVO drawingListVO : documentEntities) {
            int integer = 0;
            for (DocumentVO documentVO : drawingListVO.getChildren()) {
                ListDocumentFileEntity documentFile = new ListDocumentFileEntity(RandomUtil.uuId(),
                        drawingListVO.getProjectStageId(),drawingListVO.getTypeListCode(),
                        drawingListVO.getFSort(),drawingListVO.getFileType(),null,
                        documentVO.getDocumentNumber(), documentVO.getIssuanceDate(),"0",
                        userInfo.getUserName(), DateTime.now(),null,null,
                        null,documentVO.getFileId(),documentVO.getSequence(),documentVO.getFileName());
                if (listDocumentFileService.getInfo(documentVO.getId())==null){
                    listDocumentFileService.save(documentFile);
                    integer++;
                }
            }
        //没有就生一个
            if (integer==0){
                ListDocumentFileEntity listDocumentFileEntity = new ListDocumentFileEntity();
                listDocumentFileEntity.setId(RandomUtil.uuId());
                listDocumentFileEntity.setProjectStageId(projectStageId);
                listDocumentFileEntity.setFileType(drawingListVO.getFileType());
                listDocumentFileEntity.setTypeListCode(drawingListVO.getTypeListCode());
                listDocumentFileEntity.setFSort(drawingListVO.getFSort());
                listDocumentFileEntity.setRemark(null);
                listDocumentFileEntity.setRequired(null);
                listDocumentFileService.save(listDocumentFileEntity);
            }
        }
        return ActionResult.success("更新成功");

    }

摸鱼的同志可以看看,代码很粗糙,应该只是思维符合很多人但实际情况几乎不符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值