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