From 1941191efdb8386207722b05ac8a0bacfbafa139 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期二, 03 十一月 2026 13:19:18 +0800
Subject: [PATCH] 甘特图接口补齐工单计划时间,未排产工单不再返回空日期节点
---
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/task/MesProTaskController.java | 21 +++++++++++++++++++--
1 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/task/MesProTaskController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/task/MesProTaskController.java
index 149e109..d437268 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/task/MesProTaskController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/task/MesProTaskController.java
@@ -59,6 +59,7 @@
import java.io.IOException;
import java.math.BigDecimal;
import java.math.RoundingMode;
+import java.time.LocalDateTime;
import java.util.*;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
@@ -273,6 +274,18 @@
List<GanttDataRespVO> ganttData = new java.util.ArrayList<>();
Set<Long> visibleWorkOrderIds = convertSet(workOrders, MesProWorkOrderDO::getId);
for (MesProWorkOrderDO workOrder : workOrders) {
+ List<MesProTaskDO> woTasks = taskMap.getOrDefault(workOrder.getId(), Collections.emptyList());
+ // 宸ュ崟(project)琛屾湰韬病鏈夎鍒掓椂闂达紝鍙栬宸ュ崟浠诲姟鐨勬渶鏃╁紑濮嬨�佹渶鏅氱粨鏉�
+ LocalDateTime planStart = woTasks.stream()
+ .map(MesProTaskDO::getStartTime).filter(Objects::nonNull)
+ .min(LocalDateTime::compareTo).orElse(null);
+ LocalDateTime planEnd = woTasks.stream()
+ .map(MesProTaskDO::getEndTime).filter(Objects::nonNull)
+ .max(LocalDateTime::compareTo).orElse(null);
+ // 鏈帓浜э紙娌℃湁浠讳綍甯﹁鍒掓椂闂寸殑浠诲姟锛夌殑宸ュ崟鏃犳硶鍦ㄦ椂闂磋酱涓婂睍绀猴紝鐩存帴璺宠繃
+ if (planStart == null || planEnd == null) {
+ continue;
+ }
// 2.2.a 宸ュ崟 -> project 琛�
MesMdItemDO item = itemMap.get(workOrder.getProductId());
String productName = item != null ? item.getName() : "";
@@ -283,6 +296,8 @@
.setText(buildGanttText(item, workOrder.getQuantity(), unitMap))
.setProduct(productName)
.setQuantity(workOrder.getQuantity())
+ .setStartDate(planStart)
+ .setEndDate(planEnd)
.setDuration(0L)
.setProgress(calcProgress(workOrder.getQuantityProduced(), workOrder.getQuantity()));
if (workOrder.getParentId() != null
@@ -293,9 +308,11 @@
}
ganttData.add(woData);
- // 2.2.b 浠诲姟 -> task 琛�
- List<MesProTaskDO> woTasks = taskMap.getOrDefault(workOrder.getId(), Collections.emptyList());
+ // 2.2.b 浠诲姟 -> task 琛岋紙缂鸿鍒掓椂闂寸殑浠诲姟鏃犳硶娓叉煋鍦ㄦ椂闂磋酱涓婏級
for (MesProTaskDO task : woTasks) {
+ if (task.getStartTime() == null || task.getEndTime() == null) {
+ continue;
+ }
MesMdWorkstationDO ws = workstationMap.get(task.getWorkstationId());
MesProProcessDO proc = processMap.get(task.getProcessId());
MesMdItemDO taskItem = itemMap.get(task.getItemId());
--
Gitblit v1.9.3