package com.vci.ubcs.ddl.controller; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.vci.ubcs.ddl.bo.DdlTableBO; import com.vci.ubcs.ddl.service.IDdlService; import com.vci.ubcs.omd.dto.*; import com.vci.ubcs.omd.entity.ModifyAttributeInfo; import com.vci.ubcs.omd.vo.BtmTypeVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springblade.core.tenant.annotation.NonDS; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.Func; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.List; import java.util.Objects; /** * Description: 数据库操作控制器 * * @author LiHang * @date 2023/4/25 */ @NonDS @RestController @AllArgsConstructor @RequestMapping("/ddl") @Api(value = "数据库操作", tags = "数据库操作") public class DdlController { @Autowired private IDdlService ddlService; /** * 新增或修改数据库表 * @param ddlDTO 业务类型+链接类型 * @return 执行结果 */ @PostMapping("/submit") @ApiOperationSupport(order = 1) @ApiOperation(value = "新增或修改", notes = "业务类型链接类型传输对象") public R> submitBtmType(@RequestBody BtmAndLinkTypeDdlDTO ddlDTO) { try { return ddlService.submit(ddlDTO); } catch (Throwable e) { return R.fail(e.getMessage()); } } /** * 根据表名获取字段信息 * @param tableName 表名 * @return 执行结果 */ @GetMapping("/getTableColumnByTableName") @ApiOperation(value = "按表名获取表字段信息",notes = "传入表名") @ApiOperationSupport(order = 3) public R getTableColumnByTableName(String tableName){ return R.data(ddlService.getTableColumnByTableName(tableName)); } /** * 获取所有的表信息 * @return 表信息 */ @GetMapping("/getAllTableInfo") @ApiOperation(value = "获取所有的表信息") @ApiOperationSupport(order = 4) public R> getAllTableInfo(){ return R.data(ddlService.getAllTableInfo()); } /** * 获取数据库和业务类型中的不同的地方 * @param ddlDTO 包含业务类型和链接类型的包装 * @return 不同的地方,每一个业务类型或者链接类型一条数据 */ @PostMapping("/checkDifferentAndReflex") @ApiOperation(value = "检查业务类型的数据与数据库中是否相同") @ApiOperationSupport(order = 5) public R> checkDifferentAndReflex(@RequestBody BtmAndLinkTypeDdlDTO ddlDTO){ Func.requireNotNull(ddlDTO,"业务类型与链接对象传输对象不能为空"); return R.data(ddlService.checkDifferent(ddlDTO.getBtmTypeList(),ddlDTO.getLinkTypeList())); } /** * 检查数据表是否存在数据,不存在则删除 * @param tableCheckDTOList 需要检查的表集合 * @return 检查结果 */ @PostMapping("/checkTableHasDataThenDelete") @ApiOperation(value = "检查数据表是否存在数据,不存在则删除") @ApiOperationSupport(order = 6) public R checkTableHasDataThenDelete(@RequestBody List tableCheckDTOList){ Func.requireNotNull(tableCheckDTOList,"需要检查的表集合"); return R.data(ddlService.checkTableHasDataThenDelete(tableCheckDTOList)); } /** * 为表添加字段 * @param addColumnDTO 添加的对象 * @return 执行结果 */ @PostMapping("/addColumnForTable") @ApiOperation(value = "为表添加字段") @ApiOperationSupport(order = 6) public R addColumnForTable(@RequestBody TableAddColumnDTO addColumnDTO){ Func.requireNotNull(addColumnDTO,"添加的对象"); return R.status(ddlService.addColumnForTable(addColumnDTO)); } }