From bfb8f23399e7bd825845c282186b0d1fb3b63161 Mon Sep 17 00:00:00 2001 From: huangping Date: Mon, 25 May 2026 01:27:15 +0800 Subject: [PATCH] feat(m1): add planned start/end dates and project manager to projects --- .../persistence/project/PlatformProject.java | 34 +++++++++++++++++++ .../platform/api/service/ProjectService.java | 10 ++++++ .../platform/api/web/dto/ProjectRequest.java | 31 +++++++++++++++++ .../platform/api/web/dto/ProjectResponse.java | 27 +++++++++++++++ .../src/views/ProjectsView.vue | 21 ++++++++++++ 5 files changed, 123 insertions(+) diff --git a/services/delivery-platform-api/src/main/java/cn/craftlabs/platform/api/persistence/project/PlatformProject.java b/services/delivery-platform-api/src/main/java/cn/craftlabs/platform/api/persistence/project/PlatformProject.java index 9096a87..af01360 100644 --- a/services/delivery-platform-api/src/main/java/cn/craftlabs/platform/api/persistence/project/PlatformProject.java +++ b/services/delivery-platform-api/src/main/java/cn/craftlabs/platform/api/persistence/project/PlatformProject.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import java.time.LocalDate; import java.time.OffsetDateTime; @TableName("platform_project") @@ -26,6 +27,15 @@ public class PlatformProject { @TableField("updated_at") private OffsetDateTime updatedAt; + @TableField("planned_start_date") + private LocalDate plannedStartDate; + + @TableField("planned_end_date") + private LocalDate plannedEndDate; + + @TableField("project_manager") + private String projectManager; + public Long getId() { return id; } @@ -73,4 +83,28 @@ public class PlatformProject { public void setUpdatedAt(OffsetDateTime updatedAt) { this.updatedAt = updatedAt; } + + public LocalDate getPlannedStartDate() { + return plannedStartDate; + } + + public void setPlannedStartDate(LocalDate plannedStartDate) { + this.plannedStartDate = plannedStartDate; + } + + public LocalDate getPlannedEndDate() { + return plannedEndDate; + } + + public void setPlannedEndDate(LocalDate plannedEndDate) { + this.plannedEndDate = plannedEndDate; + } + + public String getProjectManager() { + return projectManager; + } + + public void setProjectManager(String projectManager) { + this.projectManager = projectManager; + } } diff --git a/services/delivery-platform-api/src/main/java/cn/craftlabs/platform/api/service/ProjectService.java b/services/delivery-platform-api/src/main/java/cn/craftlabs/platform/api/service/ProjectService.java index 72ff3d2..bf2cae0 100644 --- a/services/delivery-platform-api/src/main/java/cn/craftlabs/platform/api/service/ProjectService.java +++ b/services/delivery-platform-api/src/main/java/cn/craftlabs/platform/api/service/ProjectService.java @@ -14,6 +14,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; import org.springframework.web.server.ResponseStatusException; +import java.time.LocalDate; import java.time.OffsetDateTime; import java.time.ZoneOffset; import java.util.List; @@ -53,6 +54,9 @@ public class ProjectService { p.setCustomerId(request.getCustomerId()); p.setName(request.getName().trim()); p.setPhase(resolvePhase(request.getPhase())); + if (request.getPlannedStartDate() != null) p.setPlannedStartDate(LocalDate.parse(request.getPlannedStartDate())); + if (request.getPlannedEndDate() != null) p.setPlannedEndDate(LocalDate.parse(request.getPlannedEndDate())); + if (request.getProjectManager() != null) p.setProjectManager(request.getProjectManager().trim()); p.setCreatedAt(now); p.setUpdatedAt(now); projectMapper.insert(p); @@ -80,6 +84,9 @@ public class ProjectService { if (StringUtils.hasText(request.getPhase())) { p.setPhase(request.getPhase().trim()); } + if (request.getPlannedStartDate() != null) p.setPlannedStartDate(LocalDate.parse(request.getPlannedStartDate())); + if (request.getPlannedEndDate() != null) p.setPlannedEndDate(LocalDate.parse(request.getPlannedEndDate())); + if (request.getProjectManager() != null) p.setProjectManager(request.getProjectManager().trim()); p.setUpdatedAt(OffsetDateTime.now(ZoneOffset.UTC)); projectMapper.updateById(p); return toResponse(p); @@ -104,6 +111,9 @@ public class ProjectService { r.setCustomerId(p.getCustomerId()); r.setName(p.getName()); r.setPhase(p.getPhase()); + r.setPlannedStartDate(p.getPlannedStartDate() != null ? p.getPlannedStartDate().toString() : null); + r.setPlannedEndDate(p.getPlannedEndDate() != null ? p.getPlannedEndDate().toString() : null); + r.setProjectManager(p.getProjectManager()); r.setCreatedAt(p.getCreatedAt()); r.setUpdatedAt(p.getUpdatedAt()); return r; diff --git a/services/delivery-platform-api/src/main/java/cn/craftlabs/platform/api/web/dto/ProjectRequest.java b/services/delivery-platform-api/src/main/java/cn/craftlabs/platform/api/web/dto/ProjectRequest.java index ba5c735..9f8a7cd 100644 --- a/services/delivery-platform-api/src/main/java/cn/craftlabs/platform/api/web/dto/ProjectRequest.java +++ b/services/delivery-platform-api/src/main/java/cn/craftlabs/platform/api/web/dto/ProjectRequest.java @@ -16,6 +16,13 @@ public class ProjectRequest { @Size(max = 64) private String phase; + @Size(max = 128) + private String projectManager; + + private String plannedStartDate; + + private String plannedEndDate; + public Long getCustomerId() { return customerId; } @@ -39,4 +46,28 @@ public class ProjectRequest { public void setPhase(String phase) { this.phase = phase; } + + public String getProjectManager() { + return projectManager; + } + + public void setProjectManager(String projectManager) { + this.projectManager = projectManager; + } + + public String getPlannedStartDate() { + return plannedStartDate; + } + + public void setPlannedStartDate(String plannedStartDate) { + this.plannedStartDate = plannedStartDate; + } + + public String getPlannedEndDate() { + return plannedEndDate; + } + + public void setPlannedEndDate(String plannedEndDate) { + this.plannedEndDate = plannedEndDate; + } } diff --git a/services/delivery-platform-api/src/main/java/cn/craftlabs/platform/api/web/dto/ProjectResponse.java b/services/delivery-platform-api/src/main/java/cn/craftlabs/platform/api/web/dto/ProjectResponse.java index 3e8e5fc..6ebef44 100644 --- a/services/delivery-platform-api/src/main/java/cn/craftlabs/platform/api/web/dto/ProjectResponse.java +++ b/services/delivery-platform-api/src/main/java/cn/craftlabs/platform/api/web/dto/ProjectResponse.java @@ -8,6 +8,9 @@ public class ProjectResponse { private Long customerId; private String name; private String phase; + private String plannedStartDate; + private String plannedEndDate; + private String projectManager; private OffsetDateTime createdAt; private OffsetDateTime updatedAt; @@ -43,6 +46,30 @@ public class ProjectResponse { this.phase = phase; } + public String getPlannedStartDate() { + return plannedStartDate; + } + + public void setPlannedStartDate(String plannedStartDate) { + this.plannedStartDate = plannedStartDate; + } + + public String getPlannedEndDate() { + return plannedEndDate; + } + + public void setPlannedEndDate(String plannedEndDate) { + this.plannedEndDate = plannedEndDate; + } + + public String getProjectManager() { + return projectManager; + } + + public void setProjectManager(String projectManager) { + this.projectManager = projectManager; + } + public OffsetDateTime getCreatedAt() { return createdAt; } diff --git a/web/delivery-platform-ui/src/views/ProjectsView.vue b/web/delivery-platform-ui/src/views/ProjectsView.vue index fadac51..8f2b7cc 100644 --- a/web/delivery-platform-ui/src/views/ProjectsView.vue +++ b/web/delivery-platform-ui/src/views/ProjectsView.vue @@ -85,6 +85,15 @@ + + + + + + + + +