主附表外键修改后‘关联的附表’值不更新

zw_stock_in_item外键已经取消,显示关联的附表还存在,请帮忙解决一下,谢谢。

评论区

超级管理员 2026-03-20 10:43

最新的版本?

life 2026-03-20 10:51

@超级管理员

后端2.2.4

超级管理员 2026-03-20 11:02

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);

   }


}

回复

扫码关注

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