|
|
@@ -639,7 +639,7 @@ public class DyeTypeProcessController extends BaseController {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- // 在每个机台号组内,按参数分组并合并参数列
|
|
|
+ // 在每个机台号组内,按参数分组并合并参数列以及其他相同值的列
|
|
|
for (Map.Entry<String, List<Integer>> entry : deviceGroups.entrySet()) {
|
|
|
List<Integer> deviceRows = entry.getValue();
|
|
|
if (deviceRows.size() > 1) {
|
|
|
@@ -653,12 +653,47 @@ public class DyeTypeProcessController extends BaseController {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- // 合并参数列
|
|
|
+ // 合并参数列、设定值列和有效值范围列
|
|
|
for (List<Integer> paramRows : paramGroups.values()) {
|
|
|
if (paramRows.size() > 1) {
|
|
|
int startRow = paramRows.get(0);
|
|
|
int endRow = paramRows.get(paramRows.size() - 1);
|
|
|
+
|
|
|
+ // 合并参数列
|
|
|
sheet.addMergedRegion(new CellRangeAddress(startRow, endRow, 1, 1));
|
|
|
+
|
|
|
+ // 合并设定值列(仅当所有行的设定值相同时)
|
|
|
+ boolean sameSetValue = true;
|
|
|
+ DyeProcAlarm firstAlarm = sortedVos.get(startRow - 2);
|
|
|
+ for (int i = 1; i < paramRows.size(); i++) {
|
|
|
+ int rowIdx = paramRows.get(i) - 2;
|
|
|
+ if (rowIdx < sortedVos.size()) {
|
|
|
+ DyeProcAlarm currentAlarm = sortedVos.get(rowIdx);
|
|
|
+ if (!Objects.equals(firstAlarm.getSetValue(), currentAlarm.getSetValue())) {
|
|
|
+ sameSetValue = false;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (sameSetValue) {
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(startRow, endRow, 2, 2));
|
|
|
+ }
|
|
|
+
|
|
|
+ // 合并有效值范围列(仅当所有行的有效值范围相同时)
|
|
|
+ boolean sameValidRange = true;
|
|
|
+ for (int i = 1; i < paramRows.size(); i++) {
|
|
|
+ int rowIdx = paramRows.get(i) - 2;
|
|
|
+ if (rowIdx < sortedVos.size()) {
|
|
|
+ DyeProcAlarm currentAlarm = sortedVos.get(rowIdx);
|
|
|
+ if (!Objects.equals(firstAlarm.getValidRange(), currentAlarm.getValidRange())) {
|
|
|
+ sameValidRange = false;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (sameValidRange) {
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(startRow, endRow, 3, 3));
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|