浏览代码

完美解决,工艺参数告警

wukai 6 天之前
父节点
当前提交
b4a72ddce3
共有 1 个文件被更改,包括 37 次插入2 次删除
  1. 37 2
      jjt-biz/src/main/java/com/jjt/dye/controller/DyeTypeProcessController.java

+ 37 - 2
jjt-biz/src/main/java/com/jjt/dye/controller/DyeTypeProcessController.java

@@ -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));
+                                    }
                                 }
                             }
                         }