Selaa lähdekoodia

bugFix 解决甘图特数据合并异常问题

xiahan 1 vuosi sitten
vanhempi
commit
83df453a71

+ 54 - 48
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/GanttServiceImpl.java

@@ -335,58 +335,64 @@ public class GanttServiceImpl implements GanttService {
         // 具体工序作业的对象
         ScheduleGanttVo dateVo;
         int workShopIndex = 1;
-        // 对数据按照 计划开始时间+计划结束时间 分组
-        LinkedHashMap<String, List<GanttVos>> planDataMap = apsProcessOperationProcessEquDos.stream().collect(Collectors.groupingBy(info -> {
-                    if (COMBINED_PROCESSING.equals(info.getProcessway())) {
-                        return info.getPlanstartdate().toString() + info.getPlanenddate().toString();
+        // 对数据按照设备进行分组
+        LinkedHashMap<String, List<GanttVos>> processMap = apsProcessOperationProcessEquDos.stream().collect(Collectors.groupingBy(GanttVos::getProcessdeviceid,
+                    LinkedHashMap::new, Collectors.toList()));
+        for (Map.Entry<String, List<GanttVos>> deviceEntry : processMap.entrySet()) {
+            // 对数据按照 计划开始时间+计划结束时间 分组
+            LinkedHashMap<String, List<GanttVos>> planDataMap = deviceEntry.getValue().stream().collect(Collectors.groupingBy(info -> {
+                        if (COMBINED_PROCESSING.equals(info.getProcessway())) {
+                            return info.getPlanstartdate().toString() + info.getPlanenddate().toString();
+                        }
+                        return info.getUuid();
+                    },
+                    LinkedHashMap::new, Collectors.toList()));
+            for (Map.Entry<String, List<GanttVos>> planDateEntry : planDataMap.entrySet()) {
+                List<GanttVos> ganttVos = planDateEntry.getValue();
+                ganttVos.forEach(data -> {
+                    String number = processAndNumberMap.getOrDefault(data.getProcessid(), "");
+                    if (StringUtils.isNotBlank(number) && number.split(DEFAULT_SPLIT).length == 2) {
+                        data.setInputnumber(number.split(DEFAULT_SPLIT)[0]);
+                        data.setOutputnumber(number.split(DEFAULT_SPLIT)[1]);
                     }
-                    return info.getUuid();
-                },
-                LinkedHashMap::new, Collectors.toList()));
-        for (Map.Entry<String, List<GanttVos>> planDateEntry : planDataMap.entrySet()) {
-            List<GanttVos> ganttVos = planDateEntry.getValue();
-            ganttVos.forEach(data -> {
-                String number = processAndNumberMap.getOrDefault(data.getProcessid(), "");
-                if (StringUtils.isNotBlank(number) && number.split(DEFAULT_SPLIT).length == 2) {
-                    data.setInputnumber(number.split(DEFAULT_SPLIT)[0]);
-                    data.setOutputnumber(number.split(DEFAULT_SPLIT)[1]);
-                }
-            });
-            List<String> itemNames = new ArrayList<>();
-            // 按照工序作业明细ID 进行分组 并且获取 图列的 名称和描述
-            LinkedHashMap<String, List<GanttVos>> collect = ganttVos.stream().collect(Collectors.groupingBy(GanttVos::getId, LinkedHashMap::new, Collectors.toList()));
+                });
+                List<String> itemNames = new ArrayList<>();
+                // 按照工序作业明细ID 进行分组 并且获取 图列的 名称和描述
+                LinkedHashMap<String, List<GanttVos>> collect = ganttVos.stream().collect(Collectors.groupingBy(GanttVos::getId, LinkedHashMap::new, Collectors.toList()));
 
-            String itemName = collect.values().stream().map(info -> {
-                return String.format(GANTT_ITEM_NAME, info.get(0).getInmatercondition(), info.get(0).getPlanprocessrall(),
-                        info.get(0).getCustomorderno(), info.get(0).getCustomerabbreviation(), info.get(0).getDeliverydate());
-            }).collect(Collectors.joining("</br>"));
-            itemNames.add(itemName);
-            dateVo = new ScheduleGanttVo();
-            dateVo.setId(String.valueOf(workShopIndex++));
-            dateVo.setParent(ganttVos.get(0).getProcessdeviceid());
-            dateVo.setText(StringUtils.join(itemNames, "</br>"));
-            dateVo.setOpen(false);
-            dateVo.setStart_date(ganttVos.get(0).getPlanstartdate());
-            dateVo.setEnd_date(ganttVos.get(0).getPlanenddate());
-            dateVo.setName(StringUtils.join(itemNames, "</br>"));
-            dateVo.setProcessdetailids(ganttVos.stream().map(GanttVos::getId).distinct().collect(Collectors.joining(",")));
-            dateVo.setProcessids(ganttVos.stream().map(GanttVos::getProcessid).distinct().collect(Collectors.joining(",")));
-            dateVo.setGanttVos(ganttVos);
-            dateVo.setGanttprocessstatus(ganttVos.get(0).getGanttprocessstatus());
-            dateVo.setWorkstatus(ganttVos.stream().map(GanttVos::getWorkstatus).distinct().collect(Collectors.joining(",")));
-            dateVo.setLockmark(ganttVos.stream().map(GanttVos::getLockmark).distinct().collect(Collectors.joining(",")));
-            dateVo.setProductionorderid(ganttVos.stream().map(GanttVos::getProductionorderid).collect(Collectors.joining(",")));
-            // 冲突描述
-            List<GanttVos> conflictdes = ganttVos.stream().filter(v -> StringUtils.isNotBlank(v.getConflictdes())).collect(Collectors.toList());
-            if (!conflictdes.isEmpty()) {
-                String desc = conflictdes.stream().map(GanttVos::getConflictdes).collect(Collectors.joining(";"));
-                dateVo.setConflictdes(desc);
-                dateVo.setSoftconflictdes(conflictdes.stream().map(GanttVos::getSoftconflictdes).collect(Collectors.joining(";")));
-                // 有冲突描述时
-                dateVo.setConflict(StringUtils.isBlank(dateVo.getConflictdes()) && StringUtils.isBlank(dateVo.getSoftconflictdes()));
+                String itemName = collect.values().stream().map(info -> {
+                    return String.format(GANTT_ITEM_NAME, info.get(0).getInmatercondition(), info.get(0).getPlanprocessrall(),
+                            info.get(0).getCustomorderno(), info.get(0).getCustomerabbreviation(), info.get(0).getDeliverydate());
+                }).collect(Collectors.joining("</br>"));
+                itemNames.add(itemName);
+                dateVo = new ScheduleGanttVo();
+                dateVo.setId(String.valueOf(workShopIndex++));
+                dateVo.setParent(deviceEntry.getKey());
+                dateVo.setText(StringUtils.join(itemNames, "</br>"));
+                dateVo.setOpen(false);
+                dateVo.setStart_date(ganttVos.get(0).getPlanstartdate());
+                dateVo.setEnd_date(ganttVos.get(0).getPlanenddate());
+                dateVo.setName(StringUtils.join(itemNames, "</br>"));
+                dateVo.setProcessdetailids(ganttVos.stream().map(GanttVos::getId).distinct().collect(Collectors.joining(",")));
+                dateVo.setProcessids(ganttVos.stream().map(GanttVos::getProcessid).distinct().collect(Collectors.joining(",")));
+                dateVo.setGanttVos(ganttVos);
+                dateVo.setGanttprocessstatus(ganttVos.get(0).getGanttprocessstatus());
+                dateVo.setWorkstatus(ganttVos.stream().map(GanttVos::getWorkstatus).distinct().collect(Collectors.joining(",")));
+                dateVo.setLockmark(ganttVos.stream().map(GanttVos::getLockmark).distinct().collect(Collectors.joining(",")));
+                dateVo.setProductionorderid(ganttVos.stream().map(GanttVos::getProductionorderid).collect(Collectors.joining(",")));
+                // 冲突描述
+                List<GanttVos> conflictdes = ganttVos.stream().filter(v -> StringUtils.isNotBlank(v.getConflictdes())).collect(Collectors.toList());
+                if (!conflictdes.isEmpty()) {
+                    String desc = conflictdes.stream().map(GanttVos::getConflictdes).collect(Collectors.joining(";"));
+                    dateVo.setConflictdes(desc);
+                    dateVo.setSoftconflictdes(conflictdes.stream().map(GanttVos::getSoftconflictdes).collect(Collectors.joining(";")));
+                    // 有冲突描述时
+                    dateVo.setConflict(StringUtils.isBlank(dateVo.getConflictdes()) && StringUtils.isBlank(dateVo.getSoftconflictdes()));
+                }
+                resultVo.add(dateVo);
             }
-            resultVo.add(dateVo);
         }
+
         return resultVo;
         //                    dateVo.setTooltip(itemPrefix + itemDesc);
 //                    dateVo.setDesc(itemPrefix + itemDesc);