Commit c7c5270a by yuwei

项目初始化

parent abb4d48c
......@@ -10,8 +10,12 @@ public class ModelDataQuery implements Serializable {
private static final long serialVersionUID = 1L;
// 数据库表名
private String tableName;
// 查询条件
private List<Condition> conditions;
// 查询字段
private List<String> columns;
// 关键字
private String keyword;
......
package cn.datax.service.data.masterdata.controller;
import cn.datax.common.core.DataConstant;
import cn.datax.common.core.JsonPage;
import cn.datax.common.core.R;
import cn.datax.common.validate.ValidationGroups;
import cn.datax.service.data.masterdata.api.dto.ModelDto;
import cn.datax.service.data.masterdata.api.entity.ModelDataEntity;
import cn.datax.service.data.masterdata.api.entity.ModelEntity;
import cn.datax.service.data.masterdata.api.vo.ModelVo;
import cn.datax.service.data.masterdata.api.query.ModelQuery;
......@@ -24,6 +26,7 @@ import org.springframework.web.bind.annotation.*;
import cn.datax.common.base.BaseController;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
......@@ -59,6 +62,16 @@ public class ModelController extends BaseController {
return R.ok().setData(modelMapstruct.toVO(modelEntity));
}
@ApiOperation(value = "获取列表", notes = "")
@GetMapping("/list")
public R getModelList() {
QueryWrapper<ModelEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("status", DataConstant.EnableState.ENABLE.getKey());
List<ModelEntity> list = modelService.list(queryWrapper);
List<ModelVo> collect = list.stream().map(modelMapstruct::toVO).collect(Collectors.toList());
return R.ok().setData(collect);
}
/**
* 分页查询信息
*
......@@ -134,9 +147,21 @@ public class ModelController extends BaseController {
return R.ok();
}
@PostMapping("/table/{id}")
@PostMapping("/table/create/{id}")
public R createTable(@PathVariable String id) {
modelService.createTable(id);
return R.ok();
}
@DeleteMapping("/table/drop/{id}")
public R dropTable(@PathVariable String id) {
modelService.dropTable(id);
return R.ok();
}
@GetMapping("/table/param/{id}")
public R getTableParamById(@PathVariable String id) {
Map<String, Object> map = modelService.getTableParamById(id);
return R.ok().setData(map);
}
}
package cn.datax.service.data.masterdata.controller;
import cn.datax.common.base.BaseController;
import cn.datax.service.data.masterdata.api.entity.ModelEntity;
import cn.datax.common.core.JsonPage;
import cn.datax.common.core.R;
import cn.datax.service.data.masterdata.api.entity.ModelDataEntity;
import cn.datax.service.data.masterdata.api.query.ModelDataQuery;
import cn.datax.service.data.masterdata.service.ModelDataService;
import cn.datax.service.data.masterdata.utils.SearchUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
......@@ -22,9 +19,34 @@ public class ModelDataController extends BaseController {
@Autowired
private ModelDataService modelDataService;
@GetMapping("/{id}")
public R getModelDataById(@PathVariable String id, @RequestBody ModelDataEntity modelDataEntity) {
Map<String, Object> data = modelDataService.getModelDataById(modelDataEntity);
return R.ok().setData(data);
}
@PostMapping("/page")
public void getPageModelDatas(ModelDataQuery modelDataQuery) {
public R getPageModelDatas(@RequestBody ModelDataQuery modelDataQuery) {
IPage<Map<String, Object>> page = modelDataService.getPageModelDatas(modelDataQuery);
JsonPage<Map<String, Object>> jsonPage = new JsonPage<>(page.getCurrent(), page.getSize(), page.getTotal(), page.getRecords());
return R.ok().setData(jsonPage);
}
@PostMapping("/addData")
public R addModelData(@RequestBody ModelDataEntity modelDataEntity) {
modelDataService.addModelData(modelDataEntity);
return R.ok();
}
@PutMapping("/updateData/{id}")
public R updateModelData(@PathVariable String id, @RequestBody ModelDataEntity modelDataEntity) {
modelDataService.updateModelData(modelDataEntity);
return R.ok();
}
@PostMapping("/delData/{id}")
public R deleteModelData(@PathVariable String id, @RequestBody ModelDataEntity modelDataEntity) {
modelDataService.delModelData(modelDataEntity);
return R.ok();
}
}
......@@ -2,7 +2,7 @@ package cn.datax.service.data.masterdata.dao;
import cn.datax.service.data.masterdata.api.entity.ModelDataEntity;
import cn.datax.service.data.masterdata.api.entity.ModelEntity;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
......@@ -24,5 +24,7 @@ public interface MysqlDynamicDao {
void deleteData(ModelDataEntity modelDataEntity);
IPage<Map<String, Object>> getPageModelDatas(Page<Object> page, @Param(Constants.WRAPPER) QueryWrapper queryWrapper, @Param("tableName") String tableName);
IPage<Map<String, Object>> getPageModelDatas(Page<Object> page, @Param(Constants.WRAPPER) Wrapper wrapper, @Param("tableName") String tableName);
Map<String, Object> getData(ModelDataEntity modelDataEntity);
}
package cn.datax.service.data.masterdata.service;
import cn.datax.service.data.masterdata.api.entity.ModelDataEntity;
import cn.datax.service.data.masterdata.api.query.ModelDataQuery;
import com.baomidou.mybatisplus.core.metadata.IPage;
......@@ -8,4 +9,12 @@ import java.util.Map;
public interface ModelDataService {
IPage<Map<String, Object>> getPageModelDatas(ModelDataQuery modelDataQuery);
void addModelData(ModelDataEntity modelDataEntity);
void updateModelData(ModelDataEntity modelDataEntity);
void delModelData(ModelDataEntity modelDataEntity);
Map<String, Object> getModelDataById(ModelDataEntity modelDataEntity);
}
......@@ -5,6 +5,7 @@ import cn.datax.service.data.masterdata.api.dto.ModelDto;
import cn.datax.common.base.BaseService;
import java.util.List;
import java.util.Map;
/**
* <p>
......@@ -27,4 +28,8 @@ public interface ModelService extends BaseService<ModelEntity> {
void deleteModelBatch(List<String> ids);
void createTable(String id);
void dropTable(String id);
Map<String, Object> getTableParamById(String id);
}
package cn.datax.service.data.masterdata.service.impl;
import cn.datax.common.exception.DataException;
import cn.datax.service.data.masterdata.api.entity.ModelDataEntity;
import cn.datax.service.data.masterdata.api.query.ModelDataQuery;
import cn.datax.service.data.masterdata.dao.MysqlDynamicDao;
import cn.datax.service.data.masterdata.service.ModelDataService;
import cn.datax.service.data.masterdata.utils.SearchUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
@Service
......@@ -18,11 +23,71 @@ public class ModelDataServiceImpl implements ModelDataService {
@Autowired
private MysqlDynamicDao dynamicDao;
private static String DEFAULT_PRIMARY_KEY = "id";
private static List<String> SUPER_COLUMNS = Arrays.asList("id", "create_time");
@Override
public IPage<Map<String, Object>> getPageModelDatas(ModelDataQuery modelDataQuery) {
String tableName = modelDataQuery.getTableName();
if (StrUtil.isBlank(tableName)) {
throw new DataException("数据库表为空");
}
QueryWrapper queryWrapper = SearchUtil.parseWhereSql(modelDataQuery);
List<String> columns = modelDataQuery.getColumns();
columns.addAll(SUPER_COLUMNS);
String[] array = columns.toArray(new String[columns.size()]);
queryWrapper.select(array);
IPage<Map<String, Object>> page = dynamicDao.getPageModelDatas(new Page<>(modelDataQuery.getPageNum(), modelDataQuery.getPageSize()), queryWrapper, tableName);
return page;
}
@Override
public void addModelData(ModelDataEntity modelDataEntity) {
String tableName = modelDataEntity.getTableName();
if (StrUtil.isBlank(tableName)) {
throw new DataException("数据库表为空");
}
dynamicDao.insertData(modelDataEntity);
}
@Override
public void updateModelData(ModelDataEntity modelDataEntity) {
String tableName = modelDataEntity.getTableName();
if (StrUtil.isBlank(tableName)) {
throw new DataException("数据库表为空");
}
Map<String, Object> map = modelDataEntity.getDatas();
if (!map.containsKey(DEFAULT_PRIMARY_KEY)) {
throw new DataException("数据库主键为空");
}
dynamicDao.updateData(modelDataEntity);
}
@Override
public void delModelData(ModelDataEntity modelDataEntity) {
String tableName = modelDataEntity.getTableName();
if (StrUtil.isBlank(tableName)) {
throw new DataException("数据库表为空");
}
Map<String, Object> map = modelDataEntity.getDatas();
if (!map.containsKey(DEFAULT_PRIMARY_KEY)) {
throw new DataException("数据库主键为空");
}
dynamicDao.deleteData(modelDataEntity);
}
@Override
public Map<String, Object> getModelDataById(ModelDataEntity modelDataEntity) {
String tableName = modelDataEntity.getTableName();
if (StrUtil.isBlank(tableName)) {
throw new DataException("数据库表为空");
}
Map<String, Object> map = modelDataEntity.getDatas();
if (!map.containsKey(DEFAULT_PRIMARY_KEY)) {
throw new DataException("数据库主键为空");
}
Map<String, Object> data = dynamicDao.getData(modelDataEntity);
return data;
}
}
......@@ -21,7 +21,10 @@ import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* <p>
......@@ -115,4 +118,37 @@ public class ModelServiceImpl extends BaseServiceImpl<ModelDao, ModelEntity> imp
modelEntity.setIsSync(DataConstant.TrueOrFalse.TRUE.getKey());
modelDao.updateById(modelEntity);
}
@Override
public void dropTable(String id) {
ModelEntity modelEntity = super.getById(id);
String tableName = modelEntity.getModelPhysicalTable();
dynamicDao.dropTable(tableName);
}
@Override
public Map<String, Object> getTableParamById(String id) {
ModelEntity modelEntity = super.getById(id);
String tableName = modelEntity.getModelPhysicalTable();
List<ModelColumnEntity> modelColumns = modelEntity.getModelColumns();
// 列表展示字段
List<Map<String, Object>> columnList = modelColumns.stream().filter(s -> DataConstant.TrueOrFalse.TRUE.getKey().equals(s.getIsList())).map(s -> {
Map<String, Object> map = new HashMap<>(2);
map.put("prop", s.getColumnName());
map.put("label", s.getColumnComment());
return map;
}).collect(Collectors.toList());
// 查询参数字段
List<Map<String, Object>> queryList = modelColumns.stream().filter(s -> DataConstant.TrueOrFalse.TRUE.getKey().equals(s.getIsQuery())).map(s -> {
Map<String, Object> map = new HashMap<>(2);
map.put("column", s.getColumnName());
map.put("type", s.getQueryType());
return map;
}).collect(Collectors.toList());
Map<String, Object> map = new HashMap<>();
map.put("tableName", tableName);
map.put("columnList", columnList);
map.put("queryList", queryList);
return map;
}
}
......@@ -24,9 +24,9 @@
</insert>
<!-- 验证表是否存在 -->
<update id="dropTable" parameterType="java.lang.String">
<delete id="dropTable" parameterType="java.lang.String">
DROP TABLE IF EXISTS ${tableName}
</update>
</delete>
<!-- 插入数据 -->
<insert id="insertData" parameterType="cn.datax.service.data.masterdata.api.entity.ModelDataEntity">
......@@ -55,9 +55,10 @@
</delete>
<select id="getPageModelDatas" resultType="java.util.Map">
SELECT * FROM ${tableName}
<if test="ew.emptyOfWhere == false">
${ew.customSqlSegment}
</if>
SELECT ${ew.SqlSelect} FROM ${tableName} ${ew.customSqlSegment}
</select>
<select id="getData" resultType="java.util.Map">
SELECT * FROM ${tableName} WHERE id = #{datas[id]}
</select>
</mapper>
import request from '@/utils/request'
export function pageData(data) {
return request({
url: '/data/masterdata/datas/page',
method: 'post',
data: data
})
}
export function getData(data) {
return request({
url: '/data/masterdata/datas/' + data.id,
method: 'get',
data: data
})
}
export function addData(data) {
return request({
url: '/data/masterdata/datas/addData',
method: 'post',
data: data
})
}
export function updateData(data) {
return request({
url: '/data/masterdata/datas/updateData/' + data.id,
method: 'put',
data: data
})
}
export function delData(data) {
return request({
url: '/data/masterdata/datas/delData/' + data.id,
method: 'post',
data: data
})
}
import request from '@/utils/request'
export function listDataModel(data) {
return request({
url: '/data/masterdata/models/list',
method: 'get',
params: data
})
}
export function pageDataModel(data) {
return request({
url: '/data/masterdata/models/page',
......@@ -47,7 +55,21 @@ export function updateDataModel(data) {
export function createTable(id) {
return request({
url: '/data/masterdata/models/table/' + id,
url: '/data/masterdata/models/table/create/' + id,
method: 'post'
})
}
export function dropTable(id) {
return request({
url: '/data/masterdata/models/table/drop/' + id,
method: 'delete'
})
}
export function getTableParam(id) {
return request({
url: '/data/masterdata/models/table/param/' + id,
method: 'get'
})
}
<template>
<div class="app-container">
<transition name="el-zoom-in-center">
<data-list v-if="options.showList" @showCard="showCard" />
</transition>
</div>
</template>
<script>
import DataList from './DataList'
export default {
name: 'DataManage',
components: { DataList },
data() {
return {
options: {
data: {},
showList: true,
showAdd: false,
showEdit: false,
showDetail: false
}
}
},
methods: {
showCard(data) {
Object.assign(this.options, data)
}
}
}
</script>
<style lang="scss" scoped>
</style>
......@@ -249,8 +249,7 @@ export default {
{ columnName: 'create_time', columnComment: '创建日期', columnType: 'datetime', columnLength: '0', columnScale: '0', defaultValue: '', isPk: '0', isRequired: '0', isInsert: '0', isEdit: '0', isList: '0', isQuery: '0', queryType: '', htmlType: 'input', isSystem: '1' },
{ columnName: 'create_dept', columnComment: '创建人所属部门', columnType: 'varchar', columnLength: '20', columnScale: '0', defaultValue: '', isPk: '0', isRequired: '0', isInsert: '0', isEdit: '0', isList: '0', isQuery: '0', queryType: '', htmlType: 'input', isSystem: '1' },
{ columnName: 'update_by', columnComment: '更新人', columnType: 'varchar', columnLength: '20', columnScale: '0', defaultValue: '', isPk: '0', isRequired: '0', isInsert: '0', isEdit: '0', isList: '0', isQuery: '0', queryType: '', htmlType: 'input', isSystem: '1' },
{ columnName: 'update_time', columnComment: '更新日期', columnType: 'datetime', columnLength: '0', columnScale: '0', defaultValue: '', isPk: '0', isRequired: '0', isInsert: '0', isEdit: '0', isList: '0', isQuery: '0', queryType: '', htmlType: 'input', isSystem: '1' },
{ columnName: 'remark', columnComment: '备注', columnType: 'varchar', columnLength: '2000', columnScale: '0', defaultValue: '', isPk: '0', isRequired: '0', isInsert: '0', isEdit: '0', isList: '0', isQuery: '0', queryType: '', htmlType: 'input', isSystem: '1' }
{ columnName: 'update_time', columnComment: '更新日期', columnType: 'datetime', columnLength: '0', columnScale: '0', defaultValue: '', isPk: '0', isRequired: '0', isInsert: '0', isEdit: '0', isList: '0', isQuery: '0', queryType: '', htmlType: 'input', isSystem: '1' }
]
}
},
......@@ -296,7 +295,7 @@ export default {
isRequired: '0',
isInsert: '0',
isEdit: '0',
isList: '0',
isList: '1',
isQuery: '0',
queryType: '',
htmlType: 'input'
......
......@@ -284,7 +284,7 @@ export default {
isRequired: '0',
isInsert: '0',
isEdit: '0',
isList: '0',
isList: '1',
isQuery: '0',
queryType: '',
htmlType: 'input'
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment