> 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 @@