Browse Source

添加注释等

dev
jianjun 3 years ago
parent
commit
9199d321e3
  1. 30
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/poi/excel/handler/ExcelFillCellMergeStrategy.java
  2. 24
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserExportServiceImpl.java
  3. 5
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java

30
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/poi/excel/handler/ExcelFillCellMergeStrategy.java

@ -15,11 +15,18 @@ import java.util.List;
/**
* desc:单元格合并策略
*
* @author liujianjun
*/
public class ExcelFillCellMergeStrategy implements CellWriteHandler {
/**
* 需要合并的列 下标
*/
private int[] mergeColumnIndex;
/**
* 从下标n行开始合并
*/
private int mergeRowIndex;
public ExcelFillCellMergeStrategy() {
@ -45,23 +52,22 @@ public class ExcelFillCellMergeStrategy implements CellWriteHandler {
public void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, List<WriteCellData<?>> list, Cell cell, Head head, Integer integer, Boolean aBoolean) {
int curRowIndex = cell.getRowIndex();
int curColIndex = cell.getColumnIndex();
int size = list.size();
System.out.println(size);
if (curRowIndex <= mergeRowIndex) {
return;
}
//如果不指定 合并的列则全部列进行 合并判断
if (mergeColumnIndex == null) {
if (curRowIndex > 2) {
mergeWithPrevRow(writeSheetHolder, cell, curRowIndex, curColIndex);
}
} else {
if (curRowIndex > mergeRowIndex) {
for (int i = 0; i < mergeColumnIndex.length; i++) {
if (curColIndex == mergeColumnIndex[i]) {
//合并指定的列号
for (int columnIndex : mergeColumnIndex) {
if (curColIndex == columnIndex) {
mergeWithPrevRow(writeSheetHolder, cell, curRowIndex, curColIndex);
break;
}
}
}
}
}
/**
* 当前单元格向上合并
@ -72,7 +78,6 @@ public class ExcelFillCellMergeStrategy implements CellWriteHandler {
* @param curColIndex 当前列
*/
private void mergeWithPrevRow(WriteSheetHolder writeSheetHolder, Cell cell, int curRowIndex, int curColIndex) {
//writeSheetHolder.getExcelWriteHeadProperty().
// 当前行的第一个Cell
Cell curFirstCell = cell.getSheet().getRow(curRowIndex).getCell(0);
Object curFirstData = curFirstCell.getCellType() == CellType.STRING ? curFirstCell.getStringCellValue() : curFirstCell.getNumericCellValue();
@ -88,7 +93,10 @@ public class ExcelFillCellMergeStrategy implements CellWriteHandler {
Boolean dataBool = preData.equals(curData);
//此处需要注意:因为我是按照序号确定是否需要合并的,所以获取每一行第一列数据和上一行第一列数据进行比较,如果相等合并
Boolean bool = cell.getRow().getCell(0).getStringCellValue().equals(cell.getSheet().getRow(curRowIndex - 1).getCell(0).getStringCellValue());
if (dataBool && bool) {
if (!dataBool || !bool) {
return;
}
Sheet sheet = writeSheetHolder.getSheet();
List<CellRangeAddress> mergeRegions = sheet.getMergedRegions();
boolean isMerged = false;
@ -107,7 +115,7 @@ public class ExcelFillCellMergeStrategy implements CellWriteHandler {
CellRangeAddress cellRangeAddress = new CellRangeAddress(curRowIndex - 1, curRowIndex, curColIndex, curColIndex);
sheet.addMergedRegion(cellRangeAddress);
}
}
}
}

24
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserExportServiceImpl.java

@ -120,7 +120,6 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService {
}
int[] mergeColumnIndex = mergeColumnIndexList.stream().filter(Objects::nonNull).mapToInt(i->i).toArray();
// 从那一列开始合并
int mergeRowIndex = exportConfigData.getHeaderRow();
@ -134,12 +133,11 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService {
FreezeAndFilter writeHandler = new FreezeAndFilter();
excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel("居民基本信息.xlsx", response))
.registerWriteHandler(new ExcelFillCellMergeStrategy(mergeRowIndex, mergeColumnIndex))
.registerWriteHandler(writeHandler).build();
WriteSheet writeSheet = EasyExcel.writerSheet()
.registerWriteHandler(horizontalCellStyleStrategy)
.registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
.head(exportConfigData.getHeaders()).build();
.registerWriteHandler(writeHandler).build();
WriteSheet writeSheet = EasyExcel.writerSheet().head(exportConfigData.getHeaders()).build();
String staffOrgPath = null;
if (StringUtils.isNotBlank(staffInfoCacheResult.getAgencyPIds()) && !NumConstant.ZERO_STR.equals(staffInfoCacheResult.getAgencyPIds())) {
@ -164,7 +162,6 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService {
result.forEach(o -> {
List<Object> singleResult = new ArrayList<>();
Map<String,Object> originalConditionMap = new ConcurrentHashMap<>();
log.info("==========居民信息:{}",JSON.toJSONString(o));
o.forEach((key,value) -> {
List<IcCustomExportResultDTO.SqlColumn> showSqlColumns = exportConfigData.getShowSqlColumns();
Map<String, IcCustomExportResultDTO.SqlColumn> itemMap = showSqlColumns.stream().collect(Collectors.toMap(IcCustomExportResultDTO.SqlColumn::getColumnName, item -> item));
@ -196,7 +193,6 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService {
});
resultData.add(singleResult);
});
log.info("需要写入的data长度:{}", resultData.size());
excelWriter.write(resultData, writeSheet);
//todo
break;
@ -210,6 +206,11 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService {
}
}
/**
* desc:校验查询表单参数
* @param tokenDto
* @param exportResiUserFormDTO
*/
public void validateSearchForm(TokenDto tokenDto, ExportResiUserFormDTO exportResiUserFormDTO) {
IcResiUserPageFormDTO searchForm = exportResiUserFormDTO.getSearchForm();
searchForm.setCustomerId(tokenDto.getCustomerId());
@ -247,8 +248,6 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService {
private static Map<String, Cache<String,String>> remoteOptionCacheMap = new HashMap<>();
private void putRemoteValue(Set<FormItemResult> conditionItemSet, String currentStaffAgencyId, Map<String, Object> map, Map<String, Object> originalConditionMap, FormItemResult e, String columnName, String vauleStr) {
try {
log.info("========putRemoteValue:formItemResult:{}",e.getLabel());
log.info("========putRemoteValue:columnName:{},vauleStr:{}",columnName,vauleStr);
Map<String, IcResiUserImportServiceImpl.ColumnWrapper> columnWrappers = new HashMap<>();
if (e.getOptionSourceValue().contains(StrConstant.QUESTION_MARK)){
for (FormItemResult o : conditionItemSet) {
@ -272,6 +271,7 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService {
Map<String, OptionResultDTO> remoteOptions = icResiUserImportService.listRemoteCascadeOptions(parts[0], parts[1], columnWrappers, currentStaffAgencyId, "query");
List<String> listOptions = new ArrayList<>();
remoteOptions.forEach((value,label) -> {
//todo 看看怎么更好的利用本地缓存
if (vauleStr.equals(value)) {
listOptions.add(label.getLabel());
}
@ -280,11 +280,8 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService {
cache.put(vauleStr,join);
map.put(columnName, join);
}else {
//todo 不支持多个itemId
Map<String, String> remoteOptions = icResiUserImportService.listRemoteOptions(parts[0], parts[1], columnWrappers, currentStaffAgencyId, "query");
log.info("========putRemoteValue:条件:{}", JSON.toJSONString(columnWrappers));
log.info("========putRemoteValue:结果:{}", JSON.toJSONString(remoteOptions));
if (FormItemTypeEnum.CHECKBOX.getCode().equals(e.getItemType())) {
remoteOptions.forEach((label, value) -> map.put(value, vauleStr.contains(value) ? StrConstant.YES : StrConstant.NO));
} else if (FormItemTypeEnum.SELECT.getCode().equals(e.getItemType())) {
@ -292,6 +289,7 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService {
if (vauleStr.equals(value)) {
map.put(columnName, label);
}
//放if外面是为了下次取得时候 可以有值
cache.put(value,label);
});
}
@ -299,7 +297,7 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService {
}
} catch (Exception ex) {
log.error("listRemoteOptions url", ex);
log.warn("listRemoteOptions url", ex);
}
}

5
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java

@ -770,8 +770,7 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
List<SubTableJoinDTO> subTables =subTablesRes.getData();
// log.info("1、所有的子表subTables:"+JSON.toJSONString(subTables,true));
//关联哪些子表:查询条件用到的表名+查询的列对应的表 并集去重
Set<String> whereConditionTables=conditions.stream().map(ResiUserQueryValueDTO::getTableName).collect(Collectors.toSet());
Set<String> tables = new HashSet<>(whereConditionTables);
Set<String> tables = conditions.stream().map(ResiUserQueryValueDTO::getTableName).collect(Collectors.toSet());
tables.add(resultTableName);
if (CollectionUtils.isNotEmpty(exportNeedTableList)){
tables.addAll(exportNeedTableList);
@ -790,7 +789,7 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
}
});
map.put("finalSubTables",finalSubTables);
map.put("groupByTables",groupByTables.stream().collect(Collectors.toList()));
map.put("groupByTables", new ArrayList<>(groupByTables));
return map;
}

Loading…
Cancel
Save