From f39cfecb6d967b6fe18edbfb578f08fac32d46a2 Mon Sep 17 00:00:00 2001 From: jianjun Date: Tue, 26 Apr 2022 16:05:36 +0800 Subject: [PATCH 01/31] =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=20=E5=90=88=E5=B9=B6=E5=8D=95=E5=85=83=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handler/ExcelFillCellMergeStrategy.java | 114 ++++++++++ .../poi/excel/handler/ExcelMergeStrategy.java | 213 ++++++++++++++++++ .../epmet/dto/result/ConditionResultDTO.java | 5 + .../dto/result/IcCustomExportResultDTO.java | 21 +- .../IcExportTemplateForExportResultDTO.java | 5 +- .../impl/IcExportTemplateServiceImpl.java | 4 +- .../resources/mapper/IcExportTemplateDao.xml | 13 +- .../impl/IcResiUserExportServiceImpl.java | 60 +++-- .../service/impl/IcResiUserServiceImpl.java | 10 +- 9 files changed, 421 insertions(+), 24 deletions(-) create mode 100644 epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/poi/excel/handler/ExcelFillCellMergeStrategy.java create mode 100644 epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/poi/excel/handler/ExcelMergeStrategy.java diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/poi/excel/handler/ExcelFillCellMergeStrategy.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/poi/excel/handler/ExcelFillCellMergeStrategy.java new file mode 100644 index 0000000000..6b08ca5e74 --- /dev/null +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/poi/excel/handler/ExcelFillCellMergeStrategy.java @@ -0,0 +1,114 @@ +package com.epmet.commons.tools.utils.poi.excel.handler; + +import com.alibaba.excel.metadata.Head; +import com.alibaba.excel.metadata.data.WriteCellData; +import com.alibaba.excel.write.handler.CellWriteHandler; +import com.alibaba.excel.write.metadata.holder.WriteSheetHolder; +import com.alibaba.excel.write.metadata.holder.WriteTableHolder; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.CellType; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.util.CellRangeAddress; + +import java.util.List; + +/** + * desc:单元格合并策略 + * @author liujianjun + */ +public class ExcelFillCellMergeStrategy implements CellWriteHandler { + + private int[] mergeColumnIndex; + private int mergeRowIndex; + + public ExcelFillCellMergeStrategy() { + } + + public ExcelFillCellMergeStrategy(int mergeRowIndex, int[] mergeColumnIndex) { + this.mergeRowIndex = mergeRowIndex; + this.mergeColumnIndex = mergeColumnIndex; + } + + @Override + public void beforeCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, Head head, Integer columnIndex, Integer relativeRowIndex, Boolean isHead) { + + } + + @Override + public void afterCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) { + // 隐藏id列 + writeSheetHolder.getSheet().setColumnHidden(0, true); + } + + @Override + public void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, List> 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 (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]) { + mergeWithPrevRow(writeSheetHolder, cell, curRowIndex, curColIndex); + break; + } + } + } + } + } + + /** + * 当前单元格向上合并 + * + * @param writeSheetHolder + * @param cell 当前单元格 + * @param curRowIndex 当前行 + * @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(); + // 上一行的第一个Cell + Cell preFirstCell = cell.getSheet().getRow(curRowIndex - 1).getCell(0); + Object preFirstData = preFirstCell.getCellType() == CellType.STRING ? preFirstCell.getStringCellValue() : preFirstCell.getNumericCellValue(); + + if (curFirstData.equals(preFirstData)) { + Object curData = cell.getCellType() == CellType.STRING ? cell.getStringCellValue() : cell.getNumericCellValue(); + Cell preCell = cell.getSheet().getRow(curRowIndex - 1).getCell(curColIndex); + Object preData = preCell.getCellType() == CellType.STRING ? preCell.getStringCellValue() : preCell.getNumericCellValue(); + // 将当前单元格数据与上一个单元格数据比较 + Boolean dataBool = preData.equals(curData); + //此处需要注意:因为我是按照序号确定是否需要合并的,所以获取每一行第一列数据和上一行第一列数据进行比较,如果相等合并 + Boolean bool = cell.getRow().getCell(0).getStringCellValue().equals(cell.getSheet().getRow(curRowIndex - 1).getCell(0).getStringCellValue()); + if (dataBool && bool) { + Sheet sheet = writeSheetHolder.getSheet(); + List mergeRegions = sheet.getMergedRegions(); + boolean isMerged = false; + for (int i = 0; i < mergeRegions.size() && !isMerged; i++) { + CellRangeAddress cellRangeAddr = mergeRegions.get(i); + // 若上一个单元格已经被合并,则先移出原有的合并单元,再重新添加合并单元 + if (cellRangeAddr.isInRange(curRowIndex - 1, curColIndex)) { + sheet.removeMergedRegion(i); + cellRangeAddr.setLastRow(curRowIndex); + sheet.addMergedRegion(cellRangeAddr); + isMerged = true; + } + } + // 若上一个单元格未被合并,则新增合并单元 + if (!isMerged) { + CellRangeAddress cellRangeAddress = new CellRangeAddress(curRowIndex - 1, curRowIndex, curColIndex, curColIndex); + sheet.addMergedRegion(cellRangeAddress); + } + } + } + } + +} diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/poi/excel/handler/ExcelMergeStrategy.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/poi/excel/handler/ExcelMergeStrategy.java new file mode 100644 index 0000000000..141c7de5d7 --- /dev/null +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/poi/excel/handler/ExcelMergeStrategy.java @@ -0,0 +1,213 @@ +package com.epmet.commons.tools.utils.poi.excel.handler; + +/** + * desc: + * + * @author: LiuJanJun + * @date: 2022/4/26 1:36 下午 + * @version: 1.0 + */ + +import com.alibaba.excel.enums.CellDataTypeEnum; +import com.alibaba.excel.metadata.Head; +import com.alibaba.excel.metadata.data.CellData; +import com.alibaba.excel.metadata.data.WriteCellData; +import com.alibaba.excel.write.handler.CellWriteHandler; +import com.alibaba.excel.write.metadata.holder.WriteSheetHolder; +import com.alibaba.excel.write.metadata.holder.WriteTableHolder; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.CellType; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.util.CellRangeAddress; + +import java.util.List; +import java.util.Objects; +import java.util.stream.IntStream; + +/** + * 相同值合并策略 + */ + +public class ExcelMergeStrategy implements CellWriteHandler { + + /** + * 合并起始行 + */ + + private int mergeRowIndex; + /** + * 多少行合并一次 + */ + + private int eachRow; + + /** + * 合并字段的下标 + */ + + private int[] mergeColumnIndex; + + public ExcelMergeStrategy(int mergeRowIndex, int[] mergeColumnIndex, int eachRow) { + + if (mergeRowIndex < 0) { + + throw new IllegalArgumentException("mergeRowIndex must be greater than 0"); + + } + + if (eachRow < 0) { + + throw new IllegalArgumentException("eachRow must be greater than 0"); + + } + + this.mergeRowIndex = mergeRowIndex; + + this.mergeColumnIndex = mergeColumnIndex; + + this.eachRow = eachRow; + + } + + @Override + + public void beforeCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, Head head, Integer columnIndex, Integer relativeRowIndex, Boolean isHead) { + } + + @Override + + public void afterCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) { + } + + // @Override + public void afterCellDataConverted(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, CellData cellData, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) { + + int curRowIndex = cell.getRowIndex(); + +//当前列 + + int curColIndex = cell.getColumnIndex(); + +//合并条件: + +//1.当前行>合并起始行,默认标题行(0)不参加合并 + +//2.间隔行(eachRow)的上下两条不参加合并 + +//2.1间隔行(eachRow)==0时,不设置间隔 + + if (isMerge(curRowIndex)) { + + IntStream.range(0, mergeColumnIndex.length).anyMatch(i -> { + + if (curColIndex == mergeColumnIndex[i]) { + + mergeWithPrevRow(writeSheetHolder, cellData, cell, curRowIndex, curColIndex); + + return true; + + } + + return false; + + }); + + } + + } + + @Override + public void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, List> cellDataList, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) { + } + + /** + * 判断是否合并 + *

+ * 1.当前位置必须大于开始位置:curRowIndex > mergeRowIndex + *

+ * 2.根据eachRow 判断数据分割的间隔 + *

+ * 2.1如果根据eachRow=0,默认不合并 + *

+ * 2.2如果1如果根据eachRow>0,分割后的第一条数据不会与之前的合并:(curRowIndex-mergeRowIndex)%eachRow==0 + * + * @return + */ + + private boolean isMerge(Integer curRowIndex) { + if ((curRowIndex > mergeRowIndex) && eachRow > 0) { + + if ((curRowIndex - mergeRowIndex) % eachRow == 0) { + + return false; + + } + + return true; + + } + return false; + + } + + private void mergeWithPrevRow(WriteSheetHolder writeSheetHolder, CellData cellData, Cell cell, int curRowIndex, int curColIndex) { + +//获取当前行的当前列的数据和上一行的当前列列数据,通过上一行数据是否相同进行合并 + + Object curData = cellData.getType() == CellDataTypeEnum.STRING ? cellData.getStringValue() : cellData.getNumberValue(); + + Cell preCell = cell.getSheet().getRow(curRowIndex - 1).getCell(curColIndex); + + Object preData = preCell.getCellTypeEnum() == CellType.STRING ? preCell.getStringCellValue() : + + preCell.getNumericCellValue(); + +// 比较当前行的第一列的单元格与上一行是否相同,相同合并当前单元格与上一行 + + if (Objects.equals(curData, preData)) { + + Sheet sheet = writeSheetHolder.getSheet(); + + List mergeRegions = sheet.getMergedRegions(); + + boolean isMerged = false; + + for (int i = 0; i < mergeRegions.size() && !isMerged; i++) { + + CellRangeAddress cellRangeAddr = mergeRegions.get(i); + +// 若上一个单元格已经被合并,则先移出原有的合并单元,再重新添加合并单元 + + if (cellRangeAddr.isInRange(curRowIndex - 1, curColIndex)) { + + sheet.removeMergedRegion(i); + + cellRangeAddr.setLastRow(curRowIndex); + + sheet.addMergedRegion(cellRangeAddr); + + isMerged = true; + + } + + } + +// 若上一个单元格未被合并,则新增合并单元 + + if (!isMerged) { + + CellRangeAddress cellRangeAddress = new CellRangeAddress(curRowIndex - 1, curRowIndex, curColIndex, + + curColIndex); + + sheet.addMergedRegion(cellRangeAddress); + + } + + } + + } + +} + diff --git a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/ConditionResultDTO.java b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/ConditionResultDTO.java index fe2e7b03cb..4d0a000b8a 100644 --- a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/ConditionResultDTO.java +++ b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/ConditionResultDTO.java @@ -91,5 +91,10 @@ public class ConditionResultDTO implements Serializable { private String funType; private List options; + + /** + * 这个表 是否支持添加 即是否是多对一 eg:居民需求是多个对一个 + */ + private boolean supportAdd; } diff --git a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/IcCustomExportResultDTO.java b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/IcCustomExportResultDTO.java index 3b5ad1cdf2..31f09c2be0 100644 --- a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/IcCustomExportResultDTO.java +++ b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/IcCustomExportResultDTO.java @@ -1,8 +1,10 @@ package com.epmet.dto.result; +import com.epmet.commons.tools.constant.NumConstant; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import org.springframework.util.CollectionUtils; import java.io.Serializable; import java.util.ArrayList; @@ -26,6 +28,10 @@ public class IcCustomExportResultDTO implements Serializable { private List> headers = new ArrayList<>(); + + private Integer headerRow; + + /** * sql中要返回的 列名 顺序跟表头顺序一致 */ @@ -42,9 +48,22 @@ public class IcCustomExportResultDTO implements Serializable { public static class SqlColumn { private String itemId; private String tableName; + private Boolean manyToOne; private String columnName; private String optionSourceType; - private String optionSourceValue; } + /** + * desc:获取有几行头 + * @return + */ + public Integer getHeaderRow() { + if (CollectionUtils.isEmpty(headers)){ + return NumConstant.ZERO; + } + return headers.stream().mapToInt(List::size).max().orElse(0); + } + + + } diff --git a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/IcExportTemplateForExportResultDTO.java b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/IcExportTemplateForExportResultDTO.java index 3e00f6e072..d8ad9b8e5a 100644 --- a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/IcExportTemplateForExportResultDTO.java +++ b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/IcExportTemplateForExportResultDTO.java @@ -57,6 +57,9 @@ public class IcExportTemplateForExportResultDTO implements Serializable { private String columnName; private String optionSourceValue; - private String optionSourceType; + /** + * 是否支持添加 即是否是多对一 eg:居民需求是多个对一个 + */ + private boolean supportAdd; } diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcExportTemplateServiceImpl.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcExportTemplateServiceImpl.java index 50fb337bcd..5bb93a162a 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcExportTemplateServiceImpl.java +++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcExportTemplateServiceImpl.java @@ -229,7 +229,7 @@ public class IcExportTemplateServiceImpl extends BaseServiceImpl> resultTemp, IcExportTemplateForExportResultDTO root, List> headerList, List showSqlColumns, List hiddenSqlColumns, Set hasExistColumnSet) { if (StringUtils.isNotBlank(root.getColumnName())) { - showSqlColumns.add(new IcCustomExportResultDTO.SqlColumn(root.getItemId(),root.getTableName(), root.getColumnName(),root.getOptionSourceType(),root.getOptionSourceValue())); + showSqlColumns.add(new IcCustomExportResultDTO.SqlColumn(root.getItemId(),root.getTableName(),root.isSupportAdd(), root.getColumnName(),root.getOptionSourceValue())); if (StringUtils.isNotBlank(root.getOptionSourceValue())&&root.getOptionSourceValue().contains(StrConstant.QUESTION_MARK)) { String[] paramArr = root.getOptionSourceValue().split(StrConstant.QUESTION_MARK_TRANSFER)[NumConstant.ONE].split(StrConstant.AND_MARK); //先remote中再添加 然后移除item中有的 diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcExportTemplateDao.xml b/epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcExportTemplateDao.xml index 29b847ff64..fb453591f5 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcExportTemplateDao.xml +++ b/epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcExportTemplateDao.xml @@ -20,8 +20,17 @@ diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserExportServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserExportServiceImpl.java index 2c43dd6fee..873568d2b1 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserExportServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserExportServiceImpl.java @@ -218,6 +218,7 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService { searchForm.setStaffId(tokenDto.getUserId()); ValidatorUtils.validateEntity(searchForm, IcResiUserPageFormDTO.AddUserInternalGroup.class); searchForm.setIsPage(false); + searchForm.setPageSize(NumConstant.TEN_THOUSAND); } @Nullable From e2721549c7d889260a99743b79a23d1f974eda0a Mon Sep 17 00:00:00 2001 From: jianjun Date: Wed, 27 Apr 2022 13:36:58 +0800 Subject: [PATCH 24/31] =?UTF-8?q?=E8=BF=94=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/mapper/IcFormItemDao.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcFormItemDao.xml b/epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcFormItemDao.xml index 467dea37e5..9c787dcadd 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcFormItemDao.xml +++ b/epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcFormItemDao.xml @@ -264,6 +264,7 @@ ifi.LABEL, ifi.SORT, ifi.OPTION_SOURCE_VALUE, + ifi.OPTION_SOURCE_TYPE, ifig.TABLE_NAME, CONCAT(ifi.COLUMN_NAME, if(ifi.COLUMN_NUM = 0, '', ifi.COLUMN_NUM)) columnName FROM From 60f7a6e97197391393cbb3003d0eca3783467796 Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Wed, 27 Apr 2022 14:22:57 +0800 Subject: [PATCH 25/31] =?UTF-8?q?=E6=88=BF=E5=B1=8B=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/epmet/dto/IcHouseDTO.java | 1 + .../main/java/com/epmet/service/impl/IcHouseServiceImpl.java | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/IcHouseDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/IcHouseDTO.java index 755d3ff086..2b48157889 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/IcHouseDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/IcHouseDTO.java @@ -48,6 +48,7 @@ public class IcHouseDTO implements Serializable { * 小区id */ private String neighborHoodId; + private String neighborHoodName; /** * 片区id,neighbor_hood_part.id,可为空。 diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcHouseServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcHouseServiceImpl.java index c2ca4fba8e..20bea1a301 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcHouseServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcHouseServiceImpl.java @@ -95,9 +95,11 @@ public class IcHouseServiceImpl extends BaseServiceImpl Date: Wed, 27 Apr 2022 14:25:14 +0800 Subject: [PATCH 26/31] =?UTF-8?q?=E6=B7=BB=E5=8A=A0type?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../commons/tools/dto/form/IcExportItemListFormDTO.java | 6 +++++- .../com/epmet/service/impl/IcResiUserExportServiceImpl.java | 2 -- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/IcExportItemListFormDTO.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/IcExportItemListFormDTO.java index aa3a9d43b2..47fd7777b4 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/IcExportItemListFormDTO.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/IcExportItemListFormDTO.java @@ -61,9 +61,13 @@ public class IcExportItemListFormDTO implements Serializable { private String columnName; /** - * 只有远程获取的才有值 + * item选项 值 */ private String optionSourceValue; + /** + * item选项 值获取方式 + */ + private String optionSourceType; } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserExportServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserExportServiceImpl.java index 873568d2b1..daaa8ac415 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserExportServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserExportServiceImpl.java @@ -169,8 +169,6 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService { IcCustomExportResultDTO.SqlColumn columnDTO = itemMap.get(key); if (singleResult.size() < showSqlColumns.size()) { - - IcCustomExportResultDTO.SqlColumn sqlColumn = itemMap.get(key); String tableName = sqlColumn.getTableName(); String itemId = sqlColumn.getItemId(); From 1b4ccd2d73e895b5ca62d668ccccab2786d818f2 Mon Sep 17 00:00:00 2001 From: jianjun Date: Wed, 27 Apr 2022 14:39:52 +0800 Subject: [PATCH 27/31] =?UTF-8?q?=E7=AE=80=E5=8C=96=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E7=9A=84dto?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/dto/result/FormItemBaseResult.java | 59 +++++++++++++++++++ .../controller/IcFormItemController.java | 6 +- .../java/com/epmet/dao/IcFormItemDao.java | 2 +- .../com/epmet/service/IcFormItemService.java | 2 +- .../service/impl/IcFormItemServiceImpl.java | 2 +- .../main/resources/mapper/IcFormItemDao.xml | 2 +- .../impl/IcResiUserExportServiceImpl.java | 8 ++- 7 files changed, 72 insertions(+), 9 deletions(-) create mode 100644 epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/FormItemBaseResult.java diff --git a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/FormItemBaseResult.java b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/FormItemBaseResult.java new file mode 100644 index 0000000000..737940aec9 --- /dev/null +++ b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/FormItemBaseResult.java @@ -0,0 +1,59 @@ +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Description 基础表单项 + * @Author yinzuomei + * @Date 2021/10/26 2:15 下午 + */ +@Data +public class FormItemBaseResult implements Serializable { + + private static final long serialVersionUID = 5946318248252730101L; + /** + * ID + */ + private String itemId; + + + + /** + * 项标签 + */ + private String label; + + /** + * 分组ID,'默认,NONE' + */ + private String itemGroupId; + + /** + * 排序 + */ + private Integer sort; + + /** + * 默认:ic_resi_user + */ + private String tableName; + + /** + * 拼好的列名 + */ + private String columnName; + + /** + * 选项来源,REMOTE;LOCAL;如果是动态加载的下拉框或者CHECKBOX等的情况下使用。URL:接口获取(LABEL,VALUE);JSON:直接从JSON中取 + */ + private String optionSourceType; + + /** + * 来源地址,REMOTE才有,固定格式;如果OPTIONS_SOURCE是URL,则此处填写要调用的接口的URL相对路径,例如:/API/GOV/ORG/XXXX。此处不应设置参数,若需要参数应当完全由后端,通过TOKEN信息来获取 + */ + private String optionSourceValue; + +} + diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/IcFormItemController.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/IcFormItemController.java index 80d6f47037..0d6070e7f6 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/IcFormItemController.java +++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/IcFormItemController.java @@ -21,7 +21,7 @@ import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.dto.form.EditIFormItemFormDTO; import com.epmet.dto.result.ColumnTableNameResultDTO; -import com.epmet.dto.result.FormItemResult; +import com.epmet.dto.result.FormItemBaseResult; import com.epmet.dto.result.ResiCategoryItemResultDTO; import com.epmet.service.IcFormItemService; import org.springframework.beans.factory.annotation.Autowired; @@ -95,8 +95,8 @@ public class IcFormItemController { * @return */ @PostMapping("getItemList/{groupId}") - public Result> getItemListByGroupId(@RequestHeader String customerId, @PathVariable("groupId") String groupId){ - List list = icFormItemService.getItemListByGroupId(customerId,groupId); + public Result> getItemListByGroupId(@RequestHeader String customerId, @PathVariable("groupId") String groupId){ + List list = icFormItemService.getItemListByGroupId(customerId,groupId); return new Result().ok(list); } } diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/IcFormItemDao.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/IcFormItemDao.java index 2647805d6f..cece95984e 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/IcFormItemDao.java +++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/IcFormItemDao.java @@ -104,5 +104,5 @@ public interface IcFormItemDao extends BaseDao { * @param groupId * @return */ - List getItemListByGroupId(@Param("customerId") String customerId, @Param("groupId") String groupId); + List getItemListByGroupId(@Param("customerId") String customerId, @Param("groupId") String groupId); } diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/IcFormItemService.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/IcFormItemService.java index f7139d748b..b60e178ea2 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/IcFormItemService.java +++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/IcFormItemService.java @@ -90,5 +90,5 @@ public interface IcFormItemService extends BaseService { * @param groupId * @return */ - List getItemListByGroupId(String customerId, String groupId); + List getItemListByGroupId(String customerId, String groupId); } diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcFormItemServiceImpl.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcFormItemServiceImpl.java index 42d62b5369..06c8c1ed14 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcFormItemServiceImpl.java +++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcFormItemServiceImpl.java @@ -265,7 +265,7 @@ public class IcFormItemServiceImpl extends BaseServiceImpl getItemListByGroupId(String customerId, String groupId) { + public List getItemListByGroupId(String customerId, String groupId) { return baseDao.getItemListByGroupId(customerId,groupId); } diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcFormItemDao.xml b/epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcFormItemDao.xml index 9c787dcadd..9f5f495586 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcFormItemDao.xml +++ b/epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcFormItemDao.xml @@ -256,7 +256,7 @@ and ifi.DEL_FLAG = '0' AND ifig.DEL_FLAG = '0' - SELECT ifi.ID itemId, ifi.CUSTOMER_ID, diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserExportServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserExportServiceImpl.java index daaa8ac415..173e7a475b 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserExportServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserExportServiceImpl.java @@ -160,11 +160,13 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService { List> resultData = new ArrayList<>(); + List showSqlColumns = exportConfigData.getShowSqlColumns(); + Set hiddenColumnSet = exportConfigData.getHiddenSqlColumns().stream().map(IcCustomExportResultDTO.SqlColumn::getColumnName).collect(Collectors.toSet()); result.forEach(o -> { List singleResult = new ArrayList<>(); Map originalConditionMap = new ConcurrentHashMap<>(); o.forEach((key, value) -> { - List showSqlColumns = exportConfigData.getShowSqlColumns(); + Map itemMap = showSqlColumns.stream().collect(Collectors.toMap(IcCustomExportResultDTO.SqlColumn::getColumnName, item -> item)); IcCustomExportResultDTO.SqlColumn columnDTO = itemMap.get(key); @@ -173,7 +175,9 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService { String tableName = sqlColumn.getTableName(); String itemId = sqlColumn.getItemId(); String columnName = columnDTO.getColumnName(); - + if (hiddenColumnSet.contains(columnName)){ + return; + } String vauleStr = value == null ? StrConstant.EPMETY_STR : value.toString(); //保留原始值 便于remote条件获取 originalConditionMap.putIfAbsent(columnName, vauleStr); From adc92ef7c01e4f1ab249c6ab9763578c300c313c Mon Sep 17 00:00:00 2001 From: jianjun Date: Wed, 27 Apr 2022 14:42:52 +0800 Subject: [PATCH 28/31] =?UTF-8?q?=E7=AE=80=E5=8C=96=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E7=9A=84dto?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/service/impl/IcResiUserExportServiceImpl.java | 1 - 1 file changed, 1 deletion(-) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserExportServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserExportServiceImpl.java index 173e7a475b..ed792de92a 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserExportServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserExportServiceImpl.java @@ -91,7 +91,6 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService { String templateId = exportResiUserFormDTO.getTemplateId(); - ExcelWriter excelWriter = null; try { //获取用户配置的导出条件 From 927d60e5428f0a6fe8f893c68b04c85cc68f1f80 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Wed, 27 Apr 2022 14:45:33 +0800 Subject: [PATCH 29/31] /statsresiwarn/alluserwarnlist *** --- .../main/java/com/epmet/controller/StatsResiWarnController.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/StatsResiWarnController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/StatsResiWarnController.java index 866e4a9d46..3003dec607 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/StatsResiWarnController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/StatsResiWarnController.java @@ -18,6 +18,7 @@ package com.epmet.controller; import com.epmet.commons.tools.annotation.LoginUser; +import com.epmet.commons.tools.annotation.MaskResponse; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; @@ -117,6 +118,7 @@ public class StatsResiWarnController { return new Result().ok(statsResiWarnService.userWarnList(customerId,formDTO.getConfigId(), formDTO.getBuildingIdList(),formDTO.getPageNo(),formDTO.getPageSize())); } + @MaskResponse(fieldNames = { "mobile", "idCard" }, fieldsMaskType = { MaskResponse.MASK_TYPE_MOBILE, MaskResponse.MASK_TYPE_ID_CARD }) @PostMapping("alluserwarnlist") public Result> allUserWarnList(@LoginUser TokenDto tokenDto, @RequestBody StatsResiWarnFormDTO formDTO){ ValidatorUtils.validateEntity(formDTO, StatsResiWarnFormDTO.AllUser.class); From c7672f0f6dd4b3e033dba38fddcf3444c5105374 Mon Sep 17 00:00:00 2001 From: jianjun Date: Wed, 27 Apr 2022 15:14:53 +0800 Subject: [PATCH 30/31] =?UTF-8?q?=E6=8F=90=E9=AB=98=E5=8F=AF=E8=AF=BB?= =?UTF-8?q?=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/IcResiUserExportServiceImpl.java | 68 ++++++++++--------- 1 file changed, 35 insertions(+), 33 deletions(-) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserExportServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserExportServiceImpl.java index ed792de92a..8547061def 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserExportServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserExportServiceImpl.java @@ -174,7 +174,7 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService { String tableName = sqlColumn.getTableName(); String itemId = sqlColumn.getItemId(); String columnName = columnDTO.getColumnName(); - if (hiddenColumnSet.contains(columnName)){ + if (hiddenColumnSet.contains(columnName)) { return; } String vauleStr = value == null ? StrConstant.EPMETY_STR : value.toString(); @@ -268,39 +268,41 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService { String cacheValue = cache.getIfPresent(vauleStr); if (StringUtils.isNotBlank(cacheValue)) { map.put(columnName, cacheValue); - } else { - String[] parts = icResiUserImportService.splitOptionSourceUrl(e.getOptionSourceValue()); - - if (FormItemTypeEnum.CASCADER.getCode().equals(e.getItemType())) { - Map remoteOptionMap = icResiUserImportService.listRemoteCascadeOptions(parts[0], parts[1], columnWrappers, currentStaffAgencyId, "query"); - List listOptions = new ArrayList<>(); - String[] split = vauleStr.split(StrConstant.COMMA); - Arrays.stream(split).forEach((value) -> { - //todo 看看怎么更好的利用本地缓存 - OptionResultDTO optionResultDTO = remoteOptionMap.get(value); - if (optionResultDTO != null) { - listOptions.add(optionResultDTO.getLabel()); - } - }); - String join = Joiner.on("-").join(listOptions); - cache.put(vauleStr, join); - map.put(columnName, join); - } else { - //todo 不支持多个itemId - Map remoteOptions = icResiUserImportService.listRemoteOptions(parts[0], parts[1], columnWrappers, currentStaffAgencyId, "query"); - 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())) { - remoteOptions.forEach((label, value) -> { - if (vauleStr.equals(value)) { - map.put(columnName, label); - } - //放if外面是为了下次取得时候 可以有值 - cache.put(value, label); - }); - } - } + return; + } + String[] parts = icResiUserImportService.splitOptionSourceUrl(e.getOptionSourceValue()); + //如果是级联的 则调用级联获取接口 根据原始值逗号隔开的 赋值 + if (FormItemTypeEnum.CASCADER.getCode().equals(e.getItemType())) { + Map remoteOptionMap = icResiUserImportService.listRemoteCascadeOptions(parts[0], parts[1], columnWrappers, currentStaffAgencyId, "query"); + List listOptions = new ArrayList<>(); + String[] split = vauleStr.split(StrConstant.COMMA); + Arrays.stream(split).forEach((value) -> { + //todo 看看怎么更好的利用本地缓存 + OptionResultDTO optionResultDTO = remoteOptionMap.get(value); + if (optionResultDTO != null) { + listOptions.add(optionResultDTO.getLabel()); + } + }); + String join = Joiner.on("-").join(listOptions); + cache.put(vauleStr, join); + map.put(columnName, join); + return; + } + //todo 不支持多个itemId + Map remoteOptions = icResiUserImportService.listRemoteOptions(parts[0], parts[1], columnWrappers, currentStaffAgencyId, "query"); + if (FormItemTypeEnum.CHECKBOX.getCode().equals(e.getItemType())) { + remoteOptions.forEach((label, value) -> map.put(value, vauleStr.contains(value) ? StrConstant.YES : StrConstant.NO)); + return; + } + if (FormItemTypeEnum.SELECT.getCode().equals(e.getItemType())) { + remoteOptions.forEach((label, value) -> { + if (vauleStr.equals(value)) { + map.put(columnName, label); + } + //放if外面是为了下次取得时候 可以有值 + cache.put(value, label); + }); } } catch (Exception ex) { log.warn("listRemoteOptions url", ex); From 61315feeb436a0599f121d506daf8d2917f73d8f Mon Sep 17 00:00:00 2001 From: jianjun Date: Wed, 27 Apr 2022 15:19:45 +0800 Subject: [PATCH 31/31] =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=A4=9A=E4=BD=99?= =?UTF-8?q?=E7=9A=84=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/feign/OperCustomizeOpenFeignClient.java | 7 ------- .../OperCustomizeOpenFeignClientFallback.java | 5 ----- .../main/java/com/epmet/dao/IcFormItemDao.java | 9 --------- .../service/impl/IcExportTemplateServiceImpl.java | 13 +++++-------- .../src/main/resources/mapper/IcFormItemDao.xml | 15 --------------- 5 files changed, 5 insertions(+), 44 deletions(-) diff --git a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/OperCustomizeOpenFeignClient.java b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/OperCustomizeOpenFeignClient.java index 9ad09ea7b0..ce708be3b2 100644 --- a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/OperCustomizeOpenFeignClient.java +++ b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/OperCustomizeOpenFeignClient.java @@ -1,7 +1,6 @@ package com.epmet.feign; import com.epmet.commons.tools.constant.ServiceConstant; -import com.epmet.commons.tools.dto.form.IcExportTemplateSaveFormDTO; import com.epmet.commons.tools.utils.Result; import com.epmet.dto.CustomerFootBarDTO; import com.epmet.dto.IcFormItemOptionsDTO; @@ -171,10 +170,4 @@ public interface OperCustomizeOpenFeignClient { @PostMapping("/oper/customize/icExportTemplate/getExcelHeaderAndSqlColumnForExport") Result getExcelHeaderAndSqlColumnForExport(@RequestBody IcExportTemplateQueryFormDTO param); - /** - * @author sun - * @Description 居民信息自定义模板导出--保存模板 - */ - @PostMapping("/oper/customize/icExportTemplate/save") - Result> save(@RequestBody IcExportTemplateSaveFormDTO formDTO); } diff --git a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/fallback/OperCustomizeOpenFeignClientFallback.java b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/fallback/OperCustomizeOpenFeignClientFallback.java index 91e4772d8a..555dac052c 100644 --- a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/fallback/OperCustomizeOpenFeignClientFallback.java +++ b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/fallback/OperCustomizeOpenFeignClientFallback.java @@ -1,7 +1,6 @@ package com.epmet.feign.fallback; import com.epmet.commons.tools.constant.ServiceConstant; -import com.epmet.commons.tools.dto.form.IcExportTemplateSaveFormDTO; import com.epmet.commons.tools.utils.ModuleUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.dto.CustomerFootBarDTO; @@ -131,8 +130,4 @@ public class OperCustomizeOpenFeignClientFallback implements OperCustomizeOpenFe return ModuleUtils.feignConError(ServiceConstant.OPER_CUSTOMIZE_SERVER, "getExcelHeaderAndSqlColumnForExport", param); } - @Override - public Result> save(IcExportTemplateSaveFormDTO formDTO) { - return ModuleUtils.feignConError(ServiceConstant.OPER_CUSTOMIZE_SERVER, "save", formDTO); - } } diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/IcFormItemDao.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/IcFormItemDao.java index cece95984e..fda1c91afc 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/IcFormItemDao.java +++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/IcFormItemDao.java @@ -80,15 +80,6 @@ public interface IcFormItemDao extends BaseDao { **/ List getMustColumn(@Param("customerId") String customerId); - /** - * desc:获取需要远程获取并带有关联item的参数的 item项 - * - * @param customerId - * @param formCode - * @return - */ - List getConditionRemoteItems(@Param("customerId") String customerId, @Param("formCode") String formCode); - /** * desc:根据Id获取item对应的表名和item属性 * diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcExportTemplateServiceImpl.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcExportTemplateServiceImpl.java index 3186d60146..482d3af99d 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcExportTemplateServiceImpl.java +++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcExportTemplateServiceImpl.java @@ -203,20 +203,17 @@ public class IcExportTemplateServiceImpl extends BaseServiceImpl remoteItemList = icFormItemDao.getConditionRemoteItems(param.getCustomerId(), param.getFormCode()); + Map> resultTemp = list.stream().collect(Collectors.groupingBy(IcExportTemplateForExportResultDTO::getPid, LinkedHashMap::new, Collectors.toList())); List> headerList = new ArrayList<>(); List showSqlColumns = new ArrayList<>(); List hiddenSqlColumns = new ArrayList<>(); Set hasExistColumnSet = new HashSet<>(); - resultTemp.get(NumConstant.ZERO_STR).forEach(root -> { - digui(resultTemp, root, headerList, showSqlColumns, hiddenSqlColumns, hasExistColumnSet); - }); + resultTemp.get(NumConstant.ZERO_STR) + .forEach(root -> recursionData(resultTemp, root, headerList, showSqlColumns, hiddenSqlColumns, hasExistColumnSet)); //组织 关联item项的 if (hasExistColumnSet.size() > NumConstant.ZERO) { Set configItemIdSet = list.stream().map(IcExportTemplateForExportResultDTO::getItemId).collect(Collectors.toSet()); @@ -297,7 +294,7 @@ public class IcExportTemplateServiceImpl extends BaseServiceImpl> resultTemp, IcExportTemplateForExportResultDTO root, List> headerList, List showSqlColumns, List hiddenSqlColumns, Set hasExistColumnSet) { + private void recursionData(Map> resultTemp, IcExportTemplateForExportResultDTO root, List> headerList, List showSqlColumns, List hiddenSqlColumns, Set hasExistColumnSet) { if (StringUtils.isNotBlank(root.getColumnName())) { showSqlColumns.add(new IcCustomExportResultDTO.SqlColumn(root.getItemId(),root.getTableName(),root.isSupportAdd(), root.getColumnName(),root.getOptionSourceType())); if (StringUtils.isNotBlank(root.getOptionSourceValue())&&root.getOptionSourceValue().contains(StrConstant.QUESTION_MARK)) { @@ -315,7 +312,7 @@ public class IcExportTemplateServiceImpl extends BaseServiceImpl -