自定义查询和top图导出升级

This commit is contained in:
Binlin B Wang 2022-07-19 21:45:06 +08:00
parent f96474e739
commit 5c46a17b05
17 changed files with 224 additions and 69 deletions

View File

@ -4,14 +4,18 @@ import com.ebts.common.core.controller.BaseController;
import com.ebts.common.core.entity.Result; import com.ebts.common.core.entity.Result;
import com.ebts.common.utils.MapExcelUtil; import com.ebts.common.utils.MapExcelUtil;
import com.ebts.system.entity.RealUniQuery; import com.ebts.system.entity.RealUniQuery;
import com.ebts.system.entity.RelColumnInfo;
import com.ebts.system.entity.vo.RealInfo;
import com.ebts.system.service.RealQueryService; import com.ebts.system.service.RealQueryService;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.io.Serializable; import java.io.Serializable;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
/** /**
* @Author 18209 * @Author 18209
@ -34,8 +38,15 @@ public class RealQueryController extends BaseController {
@PutMapping("/real/export") @PutMapping("/real/export")
public Result<Map<String, Object>> exportReal(@Validated @RequestBody RealUniQuery realUniQuery) { public Result<Map<String, Object>> exportReal(@Validated @RequestBody RealUniQuery realUniQuery) {
Result<List<Map<String, Object>>> result = realQueryService.RealData(realUniQuery, 1); Result<List<Map<String, Object>>> result = realQueryService.RealData(realUniQuery, 1);
List<RelColumnInfo> infoList = realQueryService.getInfoList(realUniQuery.getId());
if (result.isSuccess()) { if (result.isSuccess()) {
return new MapExcelUtil().exportExcel(result.getData(), result.getMsg()); List<Map<String,String>> infoMap = infoList.stream().map(info->{
Map<String,String> map = new HashMap<>();
map.put("label",info.getLabel());
map.put("prop",info.getProp());
return map;
}).collect(Collectors.toList());
return new MapExcelUtil().exportExcel(result.getData(), result.getMsg(),infoMap);
} else { } else {
return Result.error(result.getMsg()); return Result.error(result.getMsg());
} }
@ -48,7 +59,7 @@ public class RealQueryController extends BaseController {
* @return * @return
*/ */
@GetMapping("/real/{id}") @GetMapping("/real/{id}")
public Result<List<RealUniQuery>> RealInfo(@PathVariable("id") Long id) { public Result<RealInfo> RealInfo(@PathVariable("id") Long id) {
if (id == null) { if (id == null) {
return Result.error("id不能为空!"); return Result.error("id不能为空!");
} }

View File

@ -71,14 +71,15 @@ public class BaseController {
* 响应请求分页数据 * 响应请求分页数据
*/ */
@SuppressWarnings({"rawtypes", "unchecked"}) @SuppressWarnings({"rawtypes", "unchecked"})
protected TableDataTop getDataTable(List<?> list, List<?> uconList) { protected TableDataTop getDataTable(List<?> list, List<?> uconList,List<?> infoList) {
TableDataTop rspData = new TableDataTop(); TableDataTop dataTop = new TableDataTop();
rspData.setCode(HttpStatus.SUCCESS); dataTop.setCode(HttpStatus.SUCCESS);
rspData.setMsg("查询成功"); dataTop.setMsg("查询成功");
rspData.setRows(list); dataTop.setRows(list);
rspData.setUconList(uconList); dataTop.setUconList(uconList);
rspData.setTotal(new PageInfo(list).getTotal()); dataTop.setInfoList(infoList);
return rspData; dataTop.setTotal(new PageInfo(list).getTotal());
return dataTop;
} }
/** /**

View File

@ -23,6 +23,8 @@ public class TableDataTop implements Serializable {
private List<?> uconList; private List<?> uconList;
private List<?> infoList;
/** /**
* 消息状态码 * 消息状态码
*/ */
@ -90,4 +92,12 @@ public class TableDataTop implements Serializable {
public void setMsg(String msg) { public void setMsg(String msg) {
this.msg = msg; this.msg = msg;
} }
public List<?> getInfoList() {
return infoList;
}
public void setInfoList(List<?> infoList) {
this.infoList = infoList;
}
} }

View File

@ -55,7 +55,8 @@ public class MapExcelUtil {
/** /**
* 注解列表 * 注解列表
*/ */
private List<String> herders; private List<Map<String, String>> herders;
/** /**
* 对list数据源将其里面的数据导入到excel表单 * 对list数据源将其里面的数据导入到excel表单
@ -69,14 +70,21 @@ public class MapExcelUtil {
return exportExcel(); return exportExcel();
} }
public <T>Result<T> exportExcel(List<Map<String, Object>> list, String sheetName,List<Map<String,String>> infoMap) {
this.herders = infoMap;
this.init(list, sheetName);
return exportExcel();
}
public void init(List<Map<String, Object>> list, String sheetName) {
public void init(List<Map<String, Object>> list, String sheetName) {
if (list == null) { if (list == null) {
list = new ArrayList<Map<String, Object>>(); list = new ArrayList<Map<String, Object>>();
} }
this.list = list; this.list = list;
this.sheetName = sheetName; this.sheetName = sheetName;
createExcelField();
createWorkbook(); createWorkbook();
} }
@ -87,18 +95,6 @@ public class MapExcelUtil {
this.wb = new SXSSFWorkbook(500); this.wb = new SXSSFWorkbook(500);
} }
/**
* 得到所有定义字段
*/
private void createExcelField() {
this.herders = new ArrayList<String>();
Map<String, Object> modeMap = this.list.get(0);
for (String key : modeMap.keySet()) {
this.herders.add(key);
}
}
/** /**
* 创建表格样式 * 创建表格样式
@ -182,10 +178,14 @@ public class MapExcelUtil {
row = sheet.createRow(i + 1 - startNo); row = sheet.createRow(i + 1 - startNo);
//获取内容 //获取内容
int k = 0; int k = 0;
for (String key : herders) { for (Map<String, String> herder : herders) {
// 填充单元格的值 // 填充单元格的值
this.addCell(row, key, i, k++); this.addCell(row, herder.get("prop"), i, k++);
} }
// for (String key : herders) {
// // 填充单元格的值
// this.addCell(row, key, i, k++);
// }
} }
} }
@ -262,10 +262,13 @@ public class MapExcelUtil {
Row row = sheet.createRow(0); Row row = sheet.createRow(0);
int column = 0; int column = 0;
// 写入各个字段的列头名称 // 写入各个字段的列头名称
for (String herder : herders) { for (Map<String, String> herder : herders) {
//设置列名称 //设置列名称
this.createCell(row, herder, column++); this.createCell(row, herder.get("label"), column++);
} }
// for (String herder : herders) {
// this.createCell(row, herder, column++);
// }
fillExcelData(index, row); fillExcelData(index, row);
} }
String filename = encodingFilename(sheetName); String filename = encodingFilename(sheetName);
@ -292,5 +295,4 @@ public class MapExcelUtil {
} }
} }
} }
} }

View File

@ -13,6 +13,7 @@ import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.io.Serializable;
import java.util.Map; import java.util.Map;
@ -84,10 +85,16 @@ public class TopQueryController extends BaseController {
@PreAuthorize("@ebts.hasPermi('top:preview')") @PreAuthorize("@ebts.hasPermi('top:preview')")
@Log(title = "top预览", businessType = BusinessType.OTHER) @Log(title = "top预览", businessType = BusinessType.OTHER)
@PostMapping("/preview") @PostMapping("/preview")
public Result<TopResult> preview(@RequestBody Map<String, String> params) { public Serializable preview(@RequestBody Map<String, String> params) {
if (StringUtils.isNull(params.get("jsonData"))) { if (StringUtils.isNull(params.get("jsonData"))||StringUtils.isNull(params.get("id"))) {
return Result.error("缺少必要参数!"); return Result.error("缺少必要参数!");
} }
return topQueryService.preview(params.get("jsonData"), params.get("id")); Result<TopResult> result = topQueryService.preview(params.get("jsonData"), params.get("id"));
if (result.isSuccess()){
TopResult data = result.getData();
return getDataTable(data.getDataMap(),data.getUniCons(),data.getInfoList());
}else {
return Result.error(result.getMsg());
}
} }
} }

View File

@ -1,5 +1,6 @@
package com.ebts.generator.dto; package com.ebts.generator.dto;
import com.ebts.generator.entity.UniColumnInfo;
import com.ebts.generator.entity.UniCon; import com.ebts.generator.entity.UniCon;
import java.util.List; import java.util.List;
@ -14,11 +15,13 @@ import java.util.Map;
public class TopResult { public class TopResult {
private List<Map<String, Object>> dataMap; private List<Map<String, Object>> dataMap;
private List<UniCon> uniCons; private List<UniCon> uniCons;
private List<UniColumnInfo> infoList;
public TopResult(List<Map<String, Object>> dataMap, List<UniCon> uniCons) { public TopResult(List<Map<String, Object>> dataMap, List<UniCon> uniCons,List<UniColumnInfo> infoList) {
this.dataMap = dataMap; this.dataMap = dataMap;
this.uniCons = uniCons; this.uniCons = uniCons;
this.infoList = infoList;
} }
public List<Map<String, Object>> getDataMap() { public List<Map<String, Object>> getDataMap() {
@ -36,4 +39,12 @@ public class TopResult {
public void setUniCons(List<UniCon> uniCons) { public void setUniCons(List<UniCon> uniCons) {
this.uniCons = uniCons; this.uniCons = uniCons;
} }
public List<UniColumnInfo> getInfoList() {
return infoList;
}
public void setInfoList(List<UniColumnInfo> infoList) {
this.infoList = infoList;
}
} }

View File

@ -53,9 +53,9 @@ public class TopNode {
tableSQL.append(", "); tableSQL.append(", ");
} }
tableSQL.append(this.relTable).append(".").append(column.getString("columnName")); tableSQL.append(this.relTable).append(".").append(column.getString("columnName"));
if (StringUtils.isNotNull(column.getString("columnComment"))) { // if (StringUtils.isNotNull(column.getString("columnComment"))) {
tableSQL.append(" as ").append("'").append(column.getString("columnComment")).append("'"); // tableSQL.append(" as ").append("'").append(column.getString("columnComment")).append("'");
} // }
start = true; start = true;
} }

View File

@ -1,5 +1,6 @@
package com.ebts.generator.entity; package com.ebts.generator.entity;
import com.ebts.common.utils.StringUtils;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
@ -10,6 +11,19 @@ public class UniColumnInfo {
private String prop; private String prop;
private String label; private String label;
public UniColumnInfo() {
}
public UniColumnInfo(long queryId,String prop, String label) {
this.queryId = queryId;
if (StringUtils.isNull(label)){
this.label = prop;
}else {
this.label = label;
}
this.prop = prop;
}
public long getQueryId() { public long getQueryId() {
return queryId; return queryId;
} }

View File

@ -6,10 +6,7 @@ import com.alibaba.fastjson.JSONObject;
import com.ebts.common.core.entity.Result; import com.ebts.common.core.entity.Result;
import com.ebts.common.utils.SecurityUtils; import com.ebts.common.utils.SecurityUtils;
import com.ebts.common.utils.ServerResult; import com.ebts.common.utils.ServerResult;
import com.ebts.generator.dao.QueryDao; import com.ebts.generator.dao.*;
import com.ebts.generator.dao.RelationalMapDao;
import com.ebts.generator.dao.TopSearchTableDao;
import com.ebts.generator.dao.UniQueryDao;
import com.ebts.generator.dto.TopResult; import com.ebts.generator.dto.TopResult;
import com.ebts.generator.entity.*; import com.ebts.generator.entity.*;
import com.ebts.generator.service.TopQueryService; import com.ebts.generator.service.TopQueryService;
@ -23,6 +20,7 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
/** /**
* @author: Clay * @author: Clay
@ -41,6 +39,8 @@ public class TopQueryServiceImpl implements TopQueryService {
private QueryDao queryDao; private QueryDao queryDao;
@Resource @Resource
private UniQueryDao uniQueryDao; private UniQueryDao uniQueryDao;
@Resource
private UniColumnInfoDao uniColumnInfoDao;
@Override @Override
public Map<String, Object> selectTopSearchTables() { public Map<String, Object> selectTopSearchTables() {
@ -65,6 +65,8 @@ public class TopQueryServiceImpl implements TopQueryService {
if (topNodes.size() == 0) { if (topNodes.size() == 0) {
return Result.error("top图结构有误,请整理后在试"); return Result.error("top图结构有误,请整理后在试");
} }
List<UniColumnInfo> infoList = new ArrayList<>();
//整理连线的关系 //整理连线的关系
StringBuffer sql = new StringBuffer(""); StringBuffer sql = new StringBuffer("");
StringBuilder selectSql = new StringBuilder("select "); StringBuilder selectSql = new StringBuilder("select ");
@ -118,27 +120,34 @@ public class TopQueryServiceImpl implements TopQueryService {
for (TopNode node : topNodes) { for (TopNode node : topNodes) {
JSONArray columns = node.getColumns(); JSONArray columns = node.getColumns();
for (int i = 0; i < columns.size(); i++) { for (int i = 0; i < columns.size(); i++) {
JSONObject column = columns.getJSONObject(i);
if (columns.getJSONObject(i).getInteger("isQuery") == 1) { if (columns.getJSONObject(i).getInteger("isQuery") == 1) {
JSONObject column = columns.getJSONObject(i);
UniCon uniCon = new UniCon(uniQuery.getId(), column.getString("ucName"), node.getRelTable() + "." + column.getString("columnName"), column.getString("ucCon"), column.getString("ucType"), column.getInteger("type")); UniCon uniCon = new UniCon(uniQuery.getId(), column.getString("ucName"), node.getRelTable() + "." + column.getString("columnName"), column.getString("ucCon"), column.getString("ucType"), column.getInteger("type"));
uniCons.add(uniCon); uniCons.add(uniCon);
} }
if (columns.getJSONObject(i).getInteger("isUse")==1){
// infoList.add(new UniColumnInfo(uniQuery.getId(),node.getRelTable()+"."+column.getString("columnName"),column.getString("columnComment")));
infoList.add(new UniColumnInfo(uniQuery.getId(),column.getString("columnName"),column.getString("columnComment")));
}
} }
} }
int query = uniQueryDao.updateUniQuery(uniQuery); uniQueryDao.updateUniQuery(uniQuery);
if (query > 0) { if (uniQuery.getUniCons() != null && uniQuery.getUniCons().size() > 0) {
if (uniQuery.getUniCons() != null && uniQuery.getUniCons().size() > 0) { queryDao.deleteUniCon(uniQuery.getId());
queryDao.deleteUniCon(uniQuery.getId()); queryDao.insertUniCon(uniCons);
queryDao.insertUniCon(uniCons);
}
} }
if (infoList.size() > 0) {
uniColumnInfoDao.deleteUniColumnInfo(uniQuery.getId());
uniColumnInfoDao.insertUniColumnInfo(infoList);
}
sql.append(selectQuery); sql.append(selectQuery);
PageHelper.startPage(1, 10, ""); PageHelper.startPage(1, 10, "");
List<Map<String, Object>> dataMap = queryDao.UniQuery(sql.toString()); List<Map<String, Object>> dataMap = queryDao.UniQuery(sql.toString());
TopResult topResult = new TopResult(dataMap, uniCons); TopResult topResult = new TopResult(dataMap, uniCons,infoList);
return Result.ok(topResult); return Result.ok(topResult);
} }

View File

@ -1,6 +1,7 @@
package com.ebts.system.dao; package com.ebts.system.dao;
import com.ebts.system.entity.RealUniQuery; import com.ebts.system.entity.RealUniQuery;
import com.ebts.system.entity.RelColumnInfo;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -35,4 +36,5 @@ public interface RealQueryServiceDao {
*/ */
List<RealUniQuery> queryRealInfo(Long id); List<RealUniQuery> queryRealInfo(Long id);
List<RelColumnInfo> queryRealColumnInfo(Long id);
} }

View File

@ -9,11 +9,6 @@ package com.ebts.system.entity;
public class RealUniCon { public class RealUniCon {
/**
* id
*/
private Long id;
/** /**
* 万能查询tableid * 万能查询tableid
*/ */
@ -75,14 +70,6 @@ public class RealUniCon {
this.type = type; this.type = type;
} }
public void setId(Long id) {
this.id = id;
}
public Long getId() {
return id;
}
public void setUqId(Long uqId) { public void setUqId(Long uqId) {
this.uqId = uqId; this.uqId = uqId;
} }

View File

@ -41,12 +41,29 @@ public class RealUniQuery extends BaseEntity {
private Integer isRelease; private Integer isRelease;
private List<RealUniCon> realUniCons; private List<RealUniCon> realUniCons;
private List<RelColumnInfo> infoList;
private Integer pageNum; private Integer pageNum;
private Integer pageSize; private Integer pageSize;
public List<RealUniCon> getRealUniCons() {
return realUniCons;
}
public void setRealUniCons(List<RealUniCon> realUniCons) {
this.realUniCons = realUniCons;
}
public List<RelColumnInfo> getInfoList() {
return infoList;
}
public void setInfoList(List<RelColumnInfo> infoList) {
this.infoList = infoList;
}
public Integer getIsRelease() { public Integer getIsRelease() {
return isRelease; return isRelease;
} }

View File

@ -0,0 +1,32 @@
package com.ebts.system.entity;
public class RelColumnInfo {
private long queryId;
private String prop;
private String label;
public long getQueryId() {
return queryId;
}
public void setQueryId(long queryId) {
this.queryId = queryId;
}
public String getProp() {
return prop;
}
public void setProp(String prop) {
this.prop = prop;
}
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
}

View File

@ -0,0 +1,35 @@
package com.ebts.system.entity.vo;
import com.ebts.system.entity.RealUniQuery;
import com.ebts.system.entity.RelColumnInfo;
import java.util.List;
public class RealInfo {
private List<RealUniQuery> uniCons;
private List<RelColumnInfo> infoList;
public RealInfo() {
}
public RealInfo(List<RealUniQuery> uniCons, List<RelColumnInfo> infoList) {
this.uniCons = uniCons;
this.infoList = infoList;
}
public List<RealUniQuery> getUniCons() {
return uniCons;
}
public void setUniCons(List<RealUniQuery> uniCons) {
this.uniCons = uniCons;
}
public List<RelColumnInfo> getInfoList() {
return infoList;
}
public void setInfoList(List<RelColumnInfo> infoList) {
this.infoList = infoList;
}
}

View File

@ -2,6 +2,8 @@ package com.ebts.system.service;
import com.ebts.common.core.entity.Result; import com.ebts.common.core.entity.Result;
import com.ebts.system.entity.RealUniQuery; import com.ebts.system.entity.RealUniQuery;
import com.ebts.system.entity.RelColumnInfo;
import com.ebts.system.entity.vo.RealInfo;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -28,5 +30,7 @@ public interface RealQueryService {
* @param id * @param id
* @return * @return
*/ */
Result<List<RealUniQuery>> RealInfo(Long id); Result<RealInfo> RealInfo(Long id);
List<RelColumnInfo> getInfoList(Long id);
} }

View File

@ -6,12 +6,16 @@ import com.ebts.common.core.entity.Result;
import com.ebts.system.dao.RealQueryServiceDao; import com.ebts.system.dao.RealQueryServiceDao;
import com.ebts.system.entity.RealUniCon; import com.ebts.system.entity.RealUniCon;
import com.ebts.system.entity.RealUniQuery; import com.ebts.system.entity.RealUniQuery;
import com.ebts.system.entity.RelColumnInfo;
import com.ebts.system.entity.vo.RealInfo;
import com.ebts.system.service.RealQueryService; import com.ebts.system.service.RealQueryService;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -28,14 +32,21 @@ public class RealQueryServiceImpl implements RealQueryService {
@Autowired @Autowired
private RealQueryServiceDao realQueryServiceDao; private RealQueryServiceDao realQueryServiceDao;
@Override @Override
public Result<List<RealUniQuery>> RealInfo(Long id) { public List<RelColumnInfo> getInfoList(Long id) {
List<RealUniQuery> uniCons = realQueryServiceDao.queryRealInfo(id); return realQueryServiceDao.queryRealColumnInfo(id);
return Result.ok(uniCons);
} }
@Override @Override
@Transactional(propagation = Propagation.SUPPORTS)
public Result<RealInfo> RealInfo(Long id) {
List<RealUniQuery> uniCons = realQueryServiceDao.queryRealInfo(id);
List<RelColumnInfo> infoList = realQueryServiceDao.queryRealColumnInfo(id);
return Result.ok(new RealInfo(uniCons,infoList));
}
@Override
@Transactional(propagation = Propagation.SUPPORTS)
public Result<List<Map<String, Object>>> RealData(RealUniQuery realUniQuery, Integer type) { public Result<List<Map<String, Object>>> RealData(RealUniQuery realUniQuery, Integer type) {
List<RealUniCon> realUniCons = realUniQuery.getUniCons(); List<RealUniCon> realUniCons = realUniQuery.getUniCons();
Integer pageNum = null, pageSize = null; Integer pageNum = null, pageSize = null;

View File

@ -17,7 +17,6 @@
</resultMap> </resultMap>
<resultMap type="com.ebts.system.entity.RealUniCon" id="RealUniConResult"> <resultMap type="com.ebts.system.entity.RealUniCon" id="RealUniConResult">
<result property="id" column="uc_id" />
<result property="uqId" column="uq_id" /> <result property="uqId" column="uq_id" />
<result property="ucName" column="uc_name" /> <result property="ucName" column="uc_name" />
<result property="ucKey" column="uc_key" /> <result property="ucKey" column="uc_key" />
@ -32,7 +31,7 @@
select * from gen_uni_con where uq_id = #{id} select * from gen_uni_con where uq_id = #{id}
</select> </select>
<sql id="selectUniQueryVo"> <sql id="selectUniQueryVo">
select id, uq_name, uq_sql, uq_describe, is_release, create_by, create_time, update_by, update_time from gen_uni_query select uq_name, uq_sql, uq_describe, is_release, create_by, create_time, update_by, update_time from gen_uni_query
</sql> </sql>
<select id="selectRealUniQueryById" parameterType="Long" resultMap="RealUniQueryResult"> <select id="selectRealUniQueryById" parameterType="Long" resultMap="RealUniQueryResult">
@ -43,4 +42,7 @@
<select id="realUniQuery" resultType="java.util.Map"> <select id="realUniQuery" resultType="java.util.Map">
${paramSQL} ${paramSQL}
</select> </select>
<select id="queryRealColumnInfo" resultType="com.ebts.system.entity.RelColumnInfo">
select label,prop from gen_uni_column_info where query_id = #{id}
</select>
</mapper> </mapper>