package com.emergencyrepair.business.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.emergencyrepair.business.dto.Requests; import com.emergencyrepair.business.entity.Fault; import com.emergencyrepair.business.entity.WorkOrder; import com.emergencyrepair.business.service.BusinessService; import com.emergencyrepair.common.Result; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.format.annotation.DateTimeFormat; import java.time.LocalDate; import java.util.List; @RestController @RequestMapping("/api/faults") @RequiredArgsConstructor public class FaultController { private final BusinessService businessService; @GetMapping("/page") public Result> page(@RequestParam(defaultValue = "1") long current, @RequestParam(defaultValue = "20") long size, @RequestParam(required = false) String status, @RequestParam(required = false) String keyword, @RequestParam(required = false) String xNo, @RequestParam(required = false) String teamMajor, @RequestParam(required = false) String engineeringMajor, @RequestParam(required = false) String reportUnit, @RequestParam(required = false) String owner, @RequestParam(required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate reportDateStart, @RequestParam(required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate reportDateEnd, @RequestParam(required = false) String contractorName, @RequestParam(required = false) String faultNature) { return Result.ok(businessService.pageFaults(status, keyword, xNo, teamMajor, engineeringMajor, reportUnit, owner, reportDateStart, reportDateEnd, contractorName, faultNature, current, size)); } @GetMapping public Result> list(@RequestParam(required = false) String status, @RequestParam(required = false) String keyword, @RequestParam(required = false) String xNo, @RequestParam(required = false) String teamMajor, @RequestParam(required = false) String engineeringMajor, @RequestParam(required = false) String reportUnit, @RequestParam(required = false) String owner, @RequestParam(required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate reportDateStart, @RequestParam(required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate reportDateEnd, @RequestParam(required = false) String contractorName, @RequestParam(required = false) String faultNature) { return Result.ok(businessService.listFaults(status, keyword, xNo, teamMajor, engineeringMajor, reportUnit, owner, reportDateStart, reportDateEnd, contractorName, faultNature)); } @PostMapping public Result create(@RequestBody Fault fault) { fault.setId(null); return Result.ok(businessService.saveFault(fault)); } @PutMapping("/{id}") public Result update(@PathVariable Long id, @RequestBody Fault fault) { fault.setId(id); return Result.ok(businessService.saveFault(fault)); } @DeleteMapping("/{id}") public Result delete(@PathVariable Long id) { businessService.deleteFault(id); return Result.ok(); } @PostMapping("/cancel") public Result cancel(@RequestBody Requests.CancelRequest request) { businessService.cancelFaults(request); return Result.ok(); } @PostMapping("/report") public Result report(@RequestBody Requests.IdList request) { businessService.reportFaults(request.getIds()); return Result.ok(); } @PostMapping("/review") public Result review(@RequestBody Requests.ReviewRequest request) { businessService.xcbReview(request); return Result.ok(); } @PostMapping("/approve") public Result approve(@RequestBody Requests.ApprovalRequest request) { businessService.approve(request); return Result.ok(); } @GetMapping("/dispatchable") public Result> dispatchable(@RequestParam(required = false) String keyword) { return Result.ok(businessService.listFaults("JCC_DIRECTOR_APPROVED", keyword)); } @PostMapping("/dispatch") public Result> dispatch(@RequestBody Requests.DispatchRequest request) { return Result.ok(businessService.dispatch(request)); } }