5.17

package com.example.baoli.controller;

import com.example.baoli.entity.ProcurementRecord;
import com.example.baoli.service.ProcurementService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Map;
import java.util.Optional;

@RestController
@RequestMapping("/api/procurement")
public class ProcurementController {

@Autowired
private ProcurementService procurementService;

@GetMapping
public ResponseEntity<List<ProcurementRecord>> getAllProcurementRecords() {
List<ProcurementRecord> records = procurementService.getAllProcurementRecords();
return ResponseEntity.ok(records);
}

@GetMapping("/{id}")
public ResponseEntity<ProcurementRecord> getProcurementRecordById(@PathVariable Long id) {
Optional<ProcurementRecord> record = procurementService.getProcurementRecordById(id);
return record.map(ResponseEntity::ok)
.orElse(ResponseEntity.notFound().build());
}

@PostMapping
public ResponseEntity<ProcurementRecord> createProcurementRecord(@RequestBody ProcurementRecord procurementRecord) {
try {
ProcurementRecord savedRecord = procurementService.saveProcurementRecord(procurementRecord);
return ResponseEntity.ok(savedRecord);
} catch (Exception e) {
return ResponseEntity.badRequest().build();
}
}

@PutMapping("/{id}")
public ResponseEntity<ProcurementRecord> updateProcurementRecord(@PathVariable Long id, @RequestBody ProcurementRecord procurementRecord) {
procurementRecord.setId(id);
ProcurementRecord updatedRecord = procurementService.saveProcurementRecord(procurementRecord);
return ResponseEntity.ok(updatedRecord);
}

@DeleteMapping("/{id}")
public ResponseEntity<Void> deleteProcurementRecord(@PathVariable Long id) {
procurementService.deleteProcurementRecordById(id);
return ResponseEntity.ok().build();
}

@GetMapping("/status/{status}")
public ResponseEntity<List<ProcurementRecord>> getProcurementRecordsByStatus(@PathVariable String status) {
List<ProcurementRecord> records = procurementService.getProcurementRecordsByStatus(status);
return ResponseEntity.ok(records);
}

@PutMapping("/{id}/status")
public ResponseEntity<ProcurementRecord> updateProcurementStatus(@PathVariable Long id, @RequestParam String status) {
try {
ProcurementRecord updatedRecord = procurementService.updateProcurementStatus(id, status);
if (updatedRecord != null) {
return ResponseEntity.ok(updatedRecord);
}
return ResponseEntity.notFound().build();
} catch (IllegalArgumentException e) {
return ResponseEntity.badRequest().build();
}
}

@GetMapping("/search")
public ResponseEntity<List<ProcurementRecord>> searchProcurementRecords(@RequestParam String keyword) {
List<ProcurementRecord> records = procurementService.searchProcurementRecords(keyword);
return ResponseEntity.ok(records);
}

@GetMapping("/applicant/{applicant}")
public ResponseEntity<List<ProcurementRecord>> getProcurementRecordsByApplicant(@PathVariable String applicant) {
List<ProcurementRecord> records = procurementService.getProcurementRecordsByApplicant(applicant);
return ResponseEntity.ok(records);
}

@GetMapping("/work-area/{workArea}")
public ResponseEntity<List<ProcurementRecord>> getProcurementRecordsByWorkArea(@PathVariable String workArea) {
List<ProcurementRecord> records = procurementService.getProcurementRecordsByWorkArea(workArea);
return ResponseEntity.ok(records);
}

/**
* 获取当前库存量
*/
@GetMapping("/stock")
public ResponseEntity<Integer> getCurrentStock(@RequestParam String partName, @RequestParam String partModel) {
Integer stock = procurementService.getCurrentStock(partName, partModel);
return ResponseEntity.ok(stock);
}

/**
* 获取采购状态统计
*/
@GetMapping("/statistics")
public ResponseEntity<Map<String, Long>> getProcurementStatusStatistics() {
Map<String, Long> statistics = procurementService.getProcurementStatusStatistics();
return ResponseEntity.ok(statistics);
}

/**
* 批量更新采购状态
*/
@PutMapping("/batch-status")
public ResponseEntity<List<ProcurementRecord>> batchUpdateStatus(@RequestBody BatchStatusUpdateRequest request) {
try {
List<ProcurementRecord> updatedRecords = procurementService.batchUpdateStatus(request.getIds(), request.getStatus());
return ResponseEntity.ok(updatedRecords);
} catch (Exception e) {
return ResponseEntity.badRequest().build();
}
}

// 内部类用于批量状态更新请求
public static class BatchStatusUpdateRequest {
private List<Long> ids;
private String status;

public List<Long> getIds() { return ids; }
public void setIds(List<Long> ids) { this.ids = ids; }

public String getStatus() { return status; }
public void setStatus(String status) { this.status = status; }
}
}

 

posted @ 2025-05-17 23:29  混沌武士丞  阅读(7)  评论(0)    收藏  举报