表单开发,主附表表类型,附表取消外键,主表显示还在怎么回事

主附表设置好对应关系,想取消其中一个附表,在附表-外键,删除了外键-主表名、主表字段,主表关联的附表还是显示该附表,页面还是显示该附表的数据,不支持取消吗?

评论区

花自飘零水自流 2025-12-23 18:41

我是在frame数据库 dbform表删除 sub_table_list_str字段 对应附表名 实现取消

超级管理员 2025-12-24 09:40

private void bindMainTable(DbFormVo dbFormVo, List<DbFormFieldForeignkeyVo> foreignkeyList) {

       Integer tableType = dbFormVo.getTableType();

       if (Func.notEquals(tableType, TableTypeEnum.SUB.getType()) || FuncBase.isEmpty(foreignkeyList)) {//4为主附表  如果是附表的话,需要绑定到主表

           return;

       }

       String tableName = dbFormVo.getTableName();


       List<String> mainTableNameList=new ArrayList<>();//我的主表列表

       //绑定到附表

       foreignkeyList.stream().forEach(vo -> {

           String mainTable = vo.getMainTable();//主表

           if (FuncBase.isEmpty(mainTable)) {

               return;

           }

           mainTableNameList.add(mainTable);//添加主表


           //绑定到主表

           LambdaQueryWrapper<FormEntity> wrapper = new LambdaQueryWrapper<>();

           wrapper.eq(FormEntity::getTableName, mainTable);

           FormEntity mainFormEntity = baseMapper.selectOne(wrapper);

           if (FuncBase.isEmpty(mainFormEntity)) {

               throw new JeeLowCodeException(FrameErrorCodeConstants.FRAME_MAIN_TABLE_NOT.getMsg());

           }


           String subTableListStr = mainFormEntity.getSubTableListStr();

           List<String> subTableList = FuncBase.toStrNewList(subTableListStr);

           Func.addStr2List(subTableList, tableName);//添加到list


           String newSubTableStr = String.join(",", subTableList);


           FormEntity updatMainEntity = new FormEntity();

           updatMainEntity.setId(mainFormEntity.getId());

           updatMainEntity.setDesformWebId(mainFormEntity.getDesformWebId());

           updatMainEntity.setGroupDbformId(mainFormEntity.getGroupDbformId());

           updatMainEntity.setSubTableListStr(newSubTableStr);

           baseMapper.updateById(updatMainEntity);

       });


       //获取我的所有主表

       LambdaQueryWrapper<FormEntity> wrapper = new LambdaQueryWrapper<>();

       wrapper.like(FormEntity::getSubTableListStr, tableName);

       List<FormEntity> mainFormEntityList = baseMapper.selectList(wrapper);//主表

       for(FormEntity mainFormEntity:mainFormEntityList){

           String mainTableName = mainFormEntity.getTableName();

           String subTableListStr = mainFormEntity.getSubTableListStr();

           if(Func.isEmpty(subTableListStr)){

               continue;

           }

           List<String> subTableList = FuncBase.toStrList(subTableListStr);

           if(!subTableList.contains(tableName)){//主表的附表列表中没有的话,则不处理

               continue;

           }

           //判断当前主表是否是我的主表

           if(mainTableNameList.contains(mainTableName)){

               continue;

           }

           //进行解绑

           unBindMainTable(mainFormEntity,tableName);

       }


   }

超级管理员 2025-12-24 09:40

@花自飘零水自流

可以根据上面那样改,后续再统一更新

回复

扫码关注

添加客服
图片未加载,请刷新后再试
联系我们