feat: add maintenance plan and task controllers

This commit is contained in:
chiguyong 2026-03-24 00:13:37 +08:00
parent 60cb1ba8f3
commit ab777c748e
2 changed files with 135 additions and 0 deletions

View File

@ -0,0 +1,54 @@
package com.ether.pms.mdm.controller;
import com.ether.pms.common.ApiResponse;
import com.ether.pms.mdm.entity.MaintenancePlan;
import com.ether.pms.mdm.service.MaintenancePlanService;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.UUID;
@RestController
@RequestMapping("/api/v1/ops/maintenance-plans")
@RequiredArgsConstructor
public class MaintenancePlanController {
private final MaintenancePlanService maintenancePlanService;
@PostMapping
public ApiResponse<MaintenancePlan> createPlan(@Valid @RequestBody MaintenancePlan plan) {
MaintenancePlan created = maintenancePlanService.createPlan(plan);
return ApiResponse.success(created);
}
@GetMapping
public ApiResponse<List<MaintenancePlan>> getPlans(
@RequestParam UUID projectId,
@RequestParam(required = false) MaintenancePlan.TriggerType triggerType) {
List<MaintenancePlan> plans;
if (triggerType != null) {
plans = maintenancePlanService.getPlansByTriggerType(triggerType);
} else {
plans = maintenancePlanService.getActivePlansByProject(projectId);
}
return ApiResponse.success(plans);
}
@GetMapping("/{id}")
public ApiResponse<MaintenancePlan> getPlan(@PathVariable UUID id) {
return ApiResponse.success(maintenancePlanService.getPlanById(id));
}
@PutMapping("/{id}")
public ApiResponse<MaintenancePlan> updatePlan(@PathVariable UUID id, @Valid @RequestBody MaintenancePlan plan) {
return ApiResponse.success(maintenancePlanService.updatePlan(id, plan));
}
@DeleteMapping("/{id}")
public ApiResponse<Void> deactivatePlan(@PathVariable UUID id) {
maintenancePlanService.deactivatePlan(id);
return ApiResponse.success(null);
}
}

View File

@ -0,0 +1,81 @@
package com.ether.pms.mdm.controller;
import com.ether.pms.common.ApiResponse;
import com.ether.pms.mdm.entity.MaintenanceTask;
import com.ether.pms.mdm.service.MaintenanceTaskService;
import jakarta.validation.Valid;
import lombok.Data;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;
import java.util.List;
import java.util.UUID;
@RestController
@RequestMapping("/api/v1/ops/maintenance-tasks")
@RequiredArgsConstructor
public class MaintenanceTaskController {
private final MaintenanceTaskService maintenanceTaskService;
@GetMapping
public ApiResponse<List<MaintenanceTask>> getTasks(
@RequestParam(required = false) UUID projectId,
@RequestParam(required = false) UUID assignee,
@RequestParam(required = false) MaintenanceTask.Status status,
@RequestParam(required = false) UUID equipmentId) {
List<MaintenanceTask> tasks;
if (equipmentId != null) {
tasks = maintenanceTaskService.getTasksByEquipment(equipmentId);
} else if (assignee != null) {
tasks = maintenanceTaskService.getTasksByAssignee(assignee);
} else if (status != null && projectId != null) {
tasks = maintenanceTaskService.getTasksByStatus(projectId, status);
} else {
tasks = maintenanceTaskService.getOverdueTasks();
}
return ApiResponse.success(tasks);
}
@GetMapping("/{id}")
public ApiResponse<MaintenanceTask> getTask(@PathVariable UUID id) {
return ApiResponse.success(maintenanceTaskService.getTaskById(id));
}
@PostMapping
public ApiResponse<MaintenanceTask> createTask(@Valid @RequestBody MaintenanceTask task) {
return ApiResponse.success(maintenanceTaskService.createTask(task));
}
@PostMapping("/{id}/accept")
public ApiResponse<MaintenanceTask> acceptTask(@PathVariable UUID id, @RequestParam UUID userId) {
return ApiResponse.success(maintenanceTaskService.acceptTask(id, userId));
}
@PostMapping("/{id}/start")
public ApiResponse<MaintenanceTask> startTask(@PathVariable UUID id) {
return ApiResponse.success(maintenanceTaskService.startTask(id));
}
@PostMapping("/{id}/complete")
public ApiResponse<MaintenanceTask> completeTask(
@PathVariable UUID id,
@RequestBody CompleteTaskRequest request) {
return ApiResponse.success(maintenanceTaskService.completeTask(
id, request.getLaborHours(), request.getMaterialsCost(), request.getRemarks()));
}
@PostMapping("/{id}/cancel")
public ApiResponse<Void> cancelTask(@PathVariable UUID id) {
maintenanceTaskService.cancelTask(id);
return ApiResponse.success(null);
}
@Data
public static class CompleteTaskRequest {
private BigDecimal laborHours;
private BigDecimal materialsCost;
private String remarks;
}
}