1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
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) {
        return ddlService.submit(ddlDTO);
    }
 
    /**
     * 根据表名获取字段信息
     * @param tableName 表名
     * @return 执行结果
     */
    @GetMapping("/getTableColumnByTableName")
    @ApiOperation(value = "按表名获取表字段信息",notes = "传入表名")
    @ApiOperationSupport(order = 3)
    public R<DdlTableBO> getTableColumnByTableName(String tableName){
        return R.data(ddlService.getTableColumnByTableName(tableName));
    }
 
    /**
     * 获取所有的表信息
     * @return 表信息
     */
    @GetMapping("/getAllTableInfo")
    @ApiOperation(value = "获取所有的表信息")
    @ApiOperationSupport(order = 4)
    public R<List<BtmTypeVO>> getAllTableInfo(){
        return R.data(ddlService.getAllTableInfo());
    }
 
    /**
     * 获取数据库和业务类型中的不同的地方
     * @param ddlDTO 包含业务类型和链接类型的包装
     * @return 不同的地方,每一个业务类型或者链接类型一条数据
     */
    @PostMapping("/checkDifferentAndReflex")
    @ApiOperation(value = "检查业务类型的数据与数据库中是否相同")
    @ApiOperationSupport(order = 5)
    public R<List<ModifyAttributeInfo>> 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<TableCheckResultDTO> checkTableHasDataThenDelete(@RequestBody List<TableCheckDTO> 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));
    }
}