导出字段映射升级

This commit is contained in:
clay 2022-08-01 23:02:58 +08:00
parent 3dff38153a
commit a334e106a4
13 changed files with 132 additions and 28 deletions

View File

@ -2,6 +2,8 @@ package com.ebts.web.controller.system;
import com.ebts.common.core.controller.BaseController; 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.core.entity.entity.DictData;
import com.ebts.common.utils.DictUtils;
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.RelColumnInfo;
@ -40,13 +42,18 @@ public class RealQueryController extends BaseController {
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()); List<RelColumnInfo> infoList = realQueryService.getInfoList(realUniQuery.getId());
if (result.isSuccess()) { if (result.isSuccess()) {
List<Map<String,String>> infoMap = infoList.stream().map(info->{ Map<String, List<DictData>> dictList = new HashMap<>();
Map<String,String> map = new HashMap<>(); List<Map<String, String>> infoMap = infoList.stream().map(info -> {
map.put("label",info.getLabel()); Map<String, String> map = new HashMap<>();
map.put("prop",info.getProp()); map.put("label", info.getLabel());
map.put("prop", info.getProp());
map.put("dictType", info.getDictType());
if (info.getDictType() != null) {
dictList.put(info.getDictType(), DictUtils.getDictCache(info.getDictType()));
}
return map; return map;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
return new MapExcelUtil().exportExcel(result.getData(), result.getMsg(),infoMap); return new MapExcelUtil().exportExcel(result.getData(), result.getMsg(), infoMap, dictList);
} else { } else {
return Result.error(result.getMsg()); return Result.error(result.getMsg());
} }

View File

@ -19,6 +19,7 @@ import org.springframework.web.bind.annotation.InitBinder;
import java.beans.PropertyEditorSupport; import java.beans.PropertyEditorSupport;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* web层通用数据处理 * web层通用数据处理
@ -71,13 +72,14 @@ public class BaseController {
* 响应请求分页数据 * 响应请求分页数据
*/ */
@SuppressWarnings({"rawtypes", "unchecked"}) @SuppressWarnings({"rawtypes", "unchecked"})
protected TableDataTop getDataTable(List<?> list, List<?> uconList,List<?> infoList) { protected TableDataTop getDataTable(List<?> list, List<?> uconList, List<?> infoList, Map<String,?> dictList) {
TableDataTop dataTop = new TableDataTop(); TableDataTop dataTop = new TableDataTop();
dataTop.setCode(HttpStatus.SUCCESS); dataTop.setCode(HttpStatus.SUCCESS);
dataTop.setMsg("查询成功"); dataTop.setMsg("查询成功");
dataTop.setRows(list); dataTop.setRows(list);
dataTop.setUconList(uconList); dataTop.setUconList(uconList);
dataTop.setInfoList(infoList); dataTop.setInfoList(infoList);
dataTop.setDictList(dictList);
dataTop.setTotal(new PageInfo(list).getTotal()); dataTop.setTotal(new PageInfo(list).getTotal());
return dataTop; return dataTop;
} }

View File

@ -2,6 +2,7 @@ package com.ebts.common.core.page;
import java.io.Serializable; import java.io.Serializable;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 表格分页数据对象 * 表格分页数据对象
@ -24,6 +25,8 @@ public class TableDataTop implements Serializable {
private List<?> uconList; private List<?> uconList;
private List<?> infoList; private List<?> infoList;
private Map<String,?> dictList;
/** /**
* 消息状态码 * 消息状态码
@ -100,4 +103,12 @@ public class TableDataTop implements Serializable {
public void setInfoList(List<?> infoList) { public void setInfoList(List<?> infoList) {
this.infoList = infoList; this.infoList = infoList;
} }
public Map<String, ?> getDictList() {
return dictList;
}
public void setDictList(Map<String, ?> dictList) {
this.dictList = dictList;
}
} }

View File

@ -2,6 +2,7 @@ package com.ebts.common.utils;
import com.ebts.common.config.EBTSConfig; import com.ebts.common.config.EBTSConfig;
import com.ebts.common.core.entity.Result; import com.ebts.common.core.entity.Result;
import com.ebts.common.core.entity.entity.DictData;
import com.ebts.common.exception.CustomException; import com.ebts.common.exception.CustomException;
import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.streaming.SXSSFWorkbook; import org.apache.poi.xssf.streaming.SXSSFWorkbook;
@ -56,6 +57,7 @@ public class MapExcelUtil {
* 注解列表 * 注解列表
*/ */
private List<Map<String, String>> herders; private List<Map<String, String>> herders;
private Map<String,List<DictData>> dictList;
/** /**
@ -70,8 +72,9 @@ public class MapExcelUtil {
return exportExcel(); return exportExcel();
} }
public <T>Result<T> exportExcel(List<Map<String, Object>> list, String sheetName,List<Map<String,String>> infoMap) { public <T>Result<T> exportExcel(List<Map<String, Object>> list, String sheetName, List<Map<String,String>> infoMap, Map<String,List<DictData>> dictList) {
this.herders = infoMap; this.herders = infoMap;
this.dictList = dictList;
this.init(list, sheetName); this.init(list, sheetName);
return exportExcel(); return exportExcel();
} }
@ -180,27 +183,31 @@ public class MapExcelUtil {
int k = 0; int k = 0;
for (Map<String, String> herder : herders) { for (Map<String, String> herder : herders) {
// 填充单元格的值 // 填充单元格的值
this.addCell(row, herder.get("prop"), i, k++); this.addCell(row, herder, i, k++);
} }
// for (String key : herders) {
// // 填充单元格的值
// this.addCell(row, key, i, k++);
// }
} }
} }
/** /**
* 添加单元格 * 添加单元格
*/ */
public Cell addCell(Row row, String key, int column, Integer k) { public Cell addCell(Row row, Map<String, String> herder, int column, Integer k) {
Cell cell = null; Cell cell = null;
try { try {
Object value = this.list.get(column).get(herder.get("prop"));
String dictType = herder.get("dictType");
if (dictType!=null&&!"".equals(dictType)){
for (DictData dictData : dictList.get(dictType)) {
if (dictData.getDictValue().equals(value.toString())){
value = dictData.getDictLabel();
}
}
}
// 设置行高 // 设置行高
row.setHeight((short) 280); row.setHeight((short) 280);
// 创建cell // 创建cell
cell = row.createCell(k); cell = row.createCell(k);
cell.setCellStyle(styles.get("data")); cell.setCellStyle(styles.get("data"));
Object value = this.list.get(column).get(key);
cell.setCellValue(value.toString()); cell.setCellValue(value.toString());
} catch (Exception e) { } catch (Exception e) {
logger.error("导出Excel失败{}", e); logger.error("导出Excel失败{}", e);

View File

@ -2,6 +2,8 @@ package com.ebts.generator.controller;
import com.ebts.common.core.controller.BaseController; 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.core.entity.entity.DictData;
import com.ebts.common.utils.DictUtils;
import com.ebts.common.utils.MapExcelUtil; import com.ebts.common.utils.MapExcelUtil;
import com.ebts.common.utils.StringUtils; import com.ebts.common.utils.StringUtils;
import com.ebts.generator.entity.UniColumnInfo; import com.ebts.generator.entity.UniColumnInfo;
@ -18,9 +20,8 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.io.Serializable; import java.io.Serializable;
import java.util.HashMap; import java.util.*;
import java.util.List; import java.util.stream.Collectors;
import java.util.Map;
/** /**
@ -70,7 +71,7 @@ public class QueryController extends BaseController {
@PreAuthorize("@ebts.hasPermi('query:edit')") @PreAuthorize("@ebts.hasPermi('query:edit')")
@PutMapping @PutMapping
public Result<Integer> edit(@Validated @RequestBody UniQuery uniQuery) { public Result<Integer> edit(@Validated @RequestBody UniQuery uniQuery) {
if (uniQuery.getInfoList().size() == 0){ if (uniQuery.getInfoList().size() == 0) {
return Result.error("字段信息为空,请提取字段信息!"); return Result.error("字段信息为空,请提取字段信息!");
} }
return queryService.updateQueryInfo(uniQuery); return queryService.updateQueryInfo(uniQuery);
@ -87,7 +88,28 @@ public class QueryController extends BaseController {
public Result<Map<String, Object>> export(@Validated @RequestBody UniQuery uniQuery) { public Result<Map<String, Object>> export(@Validated @RequestBody UniQuery uniQuery) {
Result<List<Map<String, Object>>> result = queryService.previewQuery(uniQuery); Result<List<Map<String, Object>>> result = queryService.previewQuery(uniQuery);
if (result.isSuccess()) { if (result.isSuccess()) {
return new MapExcelUtil().exportExcel(result.getData(), uniQuery.getUqName()); List<UniColumnInfo> infoList;
Map<String, List<DictData>> dictList = new HashMap<>();
if (uniQuery.getInfoList().size() != 0) {
infoList = uniQuery.getInfoList();
} else {
infoList = new ArrayList<>();
Set<String> keySet = result.getData().get(0).keySet();
keySet.forEach(s -> {
infoList.add(new UniColumnInfo(uniQuery.getId(), s, s, null));
});
}
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());
map.put("dictType", info.getDictType());
if (info.getDictType() != null) {
dictList.put(info.getDictType(), DictUtils.getDictCache(info.getDictType()));
}
return map;
}).collect(Collectors.toList());
return new MapExcelUtil().exportExcel(result.getData(), uniQuery.getUqName(), infoMap, dictList);
} else { } else {
return Result.error(result.getMsg()); return Result.error(result.getMsg());
} }
@ -103,7 +125,7 @@ public class QueryController extends BaseController {
@PutMapping("preview") @PutMapping("preview")
public Serializable Preview(@Validated @RequestBody UniQueryBo uniQuery) { public Serializable Preview(@Validated @RequestBody UniQueryBo uniQuery) {
UniQuery query = new UniQuery(); UniQuery query = new UniQuery();
BeanUtils.copyProperties(uniQuery,query); BeanUtils.copyProperties(uniQuery, query);
startPage(uniQuery); startPage(uniQuery);
Result<List<Map<String, Object>>> result = queryService.previewQuery(query); Result<List<Map<String, Object>>> result = queryService.previewQuery(query);
if (result.isSuccess()) { if (result.isSuccess()) {

View File

@ -92,7 +92,7 @@ public class TopQueryController extends BaseController {
Result<TopResult> result = topQueryService.preview(params.get("jsonData"), params.get("id")); Result<TopResult> result = topQueryService.preview(params.get("jsonData"), params.get("id"));
if (result.isSuccess()){ if (result.isSuccess()){
TopResult data = result.getData(); TopResult data = result.getData();
return getDataTable(data.getDataMap(),data.getUniCons(),data.getInfoList()); return getDataTable(data.getDataMap(),data.getUniCons(),data.getInfoList(),data.getDictList());
}else { }else {
return Result.error(result.getMsg()); return Result.error(result.getMsg());
} }

View File

@ -1,5 +1,6 @@
package com.ebts.generator.dto; package com.ebts.generator.dto;
import com.ebts.common.core.entity.entity.DictData;
import com.ebts.generator.entity.UniColumnInfo; import com.ebts.generator.entity.UniColumnInfo;
import com.ebts.generator.entity.UniCon; import com.ebts.generator.entity.UniCon;
@ -17,11 +18,14 @@ public class TopResult {
private List<UniCon> uniCons; private List<UniCon> uniCons;
private List<UniColumnInfo> infoList; private List<UniColumnInfo> infoList;
private Map<String,List<DictData>> dictList;
public TopResult(List<Map<String, Object>> dataMap, List<UniCon> uniCons,List<UniColumnInfo> infoList) {
public TopResult(List<Map<String, Object>> dataMap, List<UniCon> uniCons,List<UniColumnInfo> infoList,Map<String,List<DictData>> dictList) {
this.dataMap = dataMap; this.dataMap = dataMap;
this.uniCons = uniCons; this.uniCons = uniCons;
this.infoList = infoList; this.infoList = infoList;
this.dictList = dictList;
} }
public List<Map<String, Object>> getDataMap() { public List<Map<String, Object>> getDataMap() {
@ -47,4 +51,12 @@ public class TopResult {
public void setInfoList(List<UniColumnInfo> infoList) { public void setInfoList(List<UniColumnInfo> infoList) {
this.infoList = infoList; this.infoList = infoList;
} }
public Map<String, List<DictData>> getDictList() {
return dictList;
}
public void setDictList(Map<String, List<DictData>> dictList) {
this.dictList = dictList;
}
} }

View File

@ -84,11 +84,11 @@ public class QueryServiceImpl implements QueryService {
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public Result<Integer> updateQueryInfo(UniQuery uniQuery) { public Result<Integer> updateQueryInfo(UniQuery uniQuery) {
uniQueryDao.updateUniQuery(uniQuery); uniQueryDao.updateUniQuery(uniQuery);
if (uniQuery.getUniCons() != null && uniQuery.getUniCons().size() > 0) {
queryDao.deleteUniCon(uniQuery.getId()); queryDao.deleteUniCon(uniQuery.getId());
if (uniQuery.getUniCons() != null && uniQuery.getUniCons().size() > 0) {
queryDao.insertUniCon(uniQuery.getUniCons()); queryDao.insertUniCon(uniQuery.getUniCons());
resetColumnInfo(uniQuery);
} }
resetColumnInfo(uniQuery);
return Result.ok(); return Result.ok();
} }

View File

@ -4,6 +4,8 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.ebts.common.core.entity.Result; import com.ebts.common.core.entity.Result;
import com.ebts.common.core.entity.entity.DictData;
import com.ebts.common.utils.DictUtils;
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.*; import com.ebts.generator.dao.*;
@ -41,6 +43,8 @@ public class TopQueryServiceImpl implements TopQueryService {
private UniQueryDao uniQueryDao; private UniQueryDao uniQueryDao;
@Resource @Resource
private UniColumnInfoDao uniColumnInfoDao; private UniColumnInfoDao uniColumnInfoDao;
// @Resource
// private Dict
@Override @Override
public Map<String, Object> selectTopSearchTables() { public Map<String, Object> selectTopSearchTables() {
@ -147,7 +151,15 @@ public class TopQueryServiceImpl implements TopQueryService {
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,infoList); Map<String,List<DictData>> dictList = new HashMap<>();
infoList.forEach(info ->{
if (info.getDictType()!=null){
//todo 后期优化不适用循环
dictList.put(info.getDictType(),DictUtils.getDictCache(info.getDictType()));
}
});
TopResult topResult = new TopResult(dataMap, uniCons,infoList,dictList);
return Result.ok(topResult); return Result.ok(topResult);
} }

View File

@ -6,6 +6,8 @@ public class RelColumnInfo {
private String prop; private String prop;
private String label; private String label;
private String dictType;
public long getQueryId() { public long getQueryId() {
return queryId; return queryId;
} }
@ -29,4 +31,12 @@ public class RelColumnInfo {
public void setLabel(String label) { public void setLabel(String label) {
this.label = label; this.label = label;
} }
public String getDictType() {
return dictType;
}
public void setDictType(String dictType) {
this.dictType = dictType;
}
} }

View File

@ -4,17 +4,20 @@ import com.ebts.system.entity.RealUniQuery;
import com.ebts.system.entity.RelColumnInfo; import com.ebts.system.entity.RelColumnInfo;
import java.util.List; import java.util.List;
import java.util.Map;
public class RealInfo { public class RealInfo {
private List<RealUniQuery> uniCons; private List<RealUniQuery> uniCons;
private List<RelColumnInfo> infoList; private List<RelColumnInfo> infoList;
private Map<String,?> dictList;
public RealInfo() { public RealInfo() {
} }
public RealInfo(List<RealUniQuery> uniCons, List<RelColumnInfo> infoList) { public RealInfo(List<RealUniQuery> uniCons, List<RelColumnInfo> infoList,Map<String,?> dictList) {
this.uniCons = uniCons; this.uniCons = uniCons;
this.infoList = infoList; this.infoList = infoList;
this.dictList = dictList;
} }
public List<RealUniQuery> getUniCons() { public List<RealUniQuery> getUniCons() {
@ -29,7 +32,16 @@ public class RealInfo {
return infoList; return infoList;
} }
public Map<String, ?> getDictList() {
return dictList;
}
public void setDictList(Map<String, ?> dictList) {
this.dictList = dictList;
}
public void setInfoList(List<RelColumnInfo> infoList) { public void setInfoList(List<RelColumnInfo> infoList) {
this.infoList = infoList; this.infoList = infoList;
} }
} }

View File

@ -3,6 +3,8 @@ package com.ebts.system.service.impl;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.ebts.common.constant.ReturnConstants; import com.ebts.common.constant.ReturnConstants;
import com.ebts.common.core.entity.Result; import com.ebts.common.core.entity.Result;
import com.ebts.common.core.entity.entity.DictData;
import com.ebts.common.utils.DictUtils;
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;
@ -18,6 +20,7 @@ import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -42,7 +45,13 @@ public class RealQueryServiceImpl implements RealQueryService {
public Result<RealInfo> RealInfo(Long id) { public Result<RealInfo> RealInfo(Long id) {
List<RealUniQuery> uniCons = realQueryServiceDao.queryRealInfo(id); List<RealUniQuery> uniCons = realQueryServiceDao.queryRealInfo(id);
List<RelColumnInfo> infoList = realQueryServiceDao.queryRealColumnInfo(id); List<RelColumnInfo> infoList = realQueryServiceDao.queryRealColumnInfo(id);
return Result.ok(new RealInfo(uniCons,infoList)); Map<String,List<DictData>> dictList = new HashMap<>();
infoList.forEach(info->{
if (info.getDictType()!=null){
dictList.put(info.getDictType(), DictUtils.getDictCache(info.getDictType()));
}
});
return Result.ok(new RealInfo(uniCons,infoList,dictList));
} }
@Override @Override

View File

@ -43,6 +43,6 @@
${paramSQL} ${paramSQL}
</select> </select>
<select id="queryRealColumnInfo" resultType="com.ebts.system.entity.RelColumnInfo"> <select id="queryRealColumnInfo" resultType="com.ebts.system.entity.RelColumnInfo">
select label,prop from gen_uni_column_info where query_id = #{id} select label,prop,dict_type from gen_uni_column_info where query_id = #{id}
</select> </select>
</mapper> </mapper>