Pārlūkot izejas kodu

aps-甘特图列表实际时间取值问题修复testin1627

zhoudazhuang 9 mēneši atpakaļ
vecāks
revīzija
640cd6f296

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

@@ -384,6 +384,48 @@ public class GanttServiceImpl implements GanttService {
                         data.setOutputnumber(number.split(DEFAULT_SPLIT)[1]);
                     }
                 });
+                Date actualStartDate = null;
+                Date actualFinishDate = null;
+                //查询实际开工时间为空的列表
+                List<GanttVos> nullActualDateList = ganttVos.stream()
+                        .filter(g -> g.getActualstartdate() == null)
+                        .collect(Collectors.toList());
+                if (nullActualDateList.isEmpty()){
+                    //取出最早实际开工时间
+                    Optional<GanttVos> minDate = ganttVos.stream()
+                            .min(Comparator.comparing(GanttVos::getActualstartdate));
+                    if(minDate.isPresent()&&minDate.get().getActualstartdate()!= null){
+                        actualStartDate = minDate.get().getActualstartdate();
+                    }
+                }
+                //查询实际完工时间为空的列表
+                List<GanttVos> nullActualFinishDateList = ganttVos.stream().filter(g -> g.getActualfinishdate() == null)
+                        .collect(Collectors.toList());
+                if (nullActualFinishDateList.isEmpty()){
+                    //取出最晚实际完工时间
+                    Optional<GanttVos> maxDate = ganttVos.stream()
+                            .max(Comparator.comparing(GanttVos::getActualfinishdate));
+                    if(maxDate.isPresent()&&maxDate.get().getActualfinishdate()!= null){
+                        actualFinishDate = maxDate.get().getActualfinishdate();
+                    }
+                }
+                String workstatus = "";
+                Map<String, Integer> keyValueMap = new HashMap<>(16);
+                // 向键值对数组中添加元素
+                keyValueMap.put("待开工", 30);
+                keyValueMap.put("加工中", 40);
+                keyValueMap.put("已完工", 50);
+                //查询出所有不为空的状态列表
+                List<GanttVos> filteredWorkStatus = ganttVos.stream()
+                        .filter(g -> g.getWorkstatus() != null && !g.getWorkstatus().isEmpty())
+                        .collect(Collectors.toList());
+                if (!filteredWorkStatus.isEmpty()){
+                    GanttVos minWorkStatus = (filteredWorkStatus.stream()
+                            .min(Comparator.comparingInt(p -> keyValueMap.get(p.getWorkstatus())))
+                            .orElse(null));
+                    //取出最早实际开工时间
+                    workstatus = minWorkStatus.getWorkstatus();
+                }
 //                List<String> itemNames = new ArrayList<>();
                 // 按照工序作业明细ID 进行分组 并且获取 图列的 名称和描述
 //                LinkedHashMap<String, List<GanttVos>> collect = ganttVos.stream().collect(Collectors.groupingBy(GanttVos::getId, LinkedHashMap::new, Collectors.toList()));
@@ -421,6 +463,9 @@ public class GanttServiceImpl implements GanttService {
                     // 有冲突描述时
                     dateVo.setConflict(StringUtils.isBlank(dateVo.getConflictdes()) && StringUtils.isBlank(dateVo.getSoftconflictdes()));
                 }
+                dateVo.setGanttprocessstatus(GANTT_PROCESS_STATUS_MAP.getOrDefault(workstatus, ""));
+                dateVo.setActualstartdate(actualStartDate);
+                dateVo.setActualfinishdate(actualFinishDate);
                 resultVo.add(dateVo);
             }
         }

+ 2 - 2
cx-aps/cx-aps-common/src/main/resources/mybatis/ApsProcessOperationProcessEquDao.xml

@@ -168,8 +168,8 @@
         a2.ID as processid,
         a2.PLANINPUT AS INMATERCONDITION,
         a2.PROCESSSTATUS,
-        a2.ACTUALSTARTDATE,
-        a2.ACTUALFINISHDATE,
+        a1.ACTUALSTARTDATE,
+        a1.ACTUALFINISHDATE,
         a2.PROCESSNAME,
         a2.LOCKMARK,
         a2.PROCESSWAY,

+ 9 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/ScheduleGanttVo.java

@@ -135,4 +135,13 @@ public class ScheduleGanttVo {
      * 详细对象
      */
     private List<GanttVos> ganttVos;
+
+    /**
+     * 实际开工时间
+     */
+    private Date actualstartdate;
+    /**
+     * 实际完工时间
+     */
+    private Date actualfinishdate;
 }