3
完成了后端核心代码
@RestController
@RequestMapping("/api/return-factory")
public class ReturnFactoryController {
@Autowired
private ReturnFactoryService returnFactoryService;
// 发起返厂申请
@PostMapping
public ResponseEntity<ReturnFactoryOrder> createOrder(
@RequestBody ReturnFactoryRequest request) {
return ResponseEntity.ok(returnFactoryService.createOrder(request));
}
// 厂商状态回调接口
@PostMapping("/{orderId}/status")
public ResponseEntity<Void> updateStatus(
@PathVariable Long orderId,
@RequestParam String status,
@RequestBody(required = false) RepairResultDTO result) {
returnFactoryService.updateStatus(orderId, status, result);
return ResponseEntity.ok().build();
}
}
完成了状态机服务(关键业务逻辑)
@Service
@Transactional
public class ReturnFactoryService {
public ReturnFactoryOrder createOrder(ReturnFactoryRequest request) {
// 校验备件是否可返厂
SparePart part = sparePartRepository.findBySnCode(request.getSnCode())
.orElseThrow(() -> new IllegalArgumentException("Invalid SN Code"));
if (!part.getStatus().equals(SparePartStatus.FAULTY)) {
throw new IllegalStateException("Only faulty parts can be returned");
}
// 生成返厂工单
ReturnFactoryOrder order = new ReturnFactoryOrder();
order.setSnCode(request.getSnCode());
order.setStatus(ReturnStatus.PENDING);
order.setVendor(vendorRepository.findById(request.getVendorId()).orElseThrow());
// 锁定库存状态
part.setStatus(SparePartStatus.IN_REPAIR);
sparePartRepository.save(part);
return returnFactoryRepository.save(order);
}
public void updateStatus(Long orderId, String status, RepairResultDTO result) {
ReturnFactoryOrder order = returnFactoryRepository.findById(orderId)
.orElseThrow(() -> new IllegalArgumentException("Order not found"));
// 状态机转换
switch (ReturnStatus.valueOf(status)) {
case RETURNED:
handleReturnedOrder(order, result);
break;
case SCRAPPED:
handleScrappedOrder(order);
break;
// ...其他状态处理
}
}
private void handleReturnedOrder(ReturnFactoryOrder order, RepairResultDTO result) {
// 更新备件状态为修好件
SparePart part = sparePartRepository.findBySnCode(order.getSnCode()).orElseThrow();
part.setStatus(SparePartStatus.REPAIRED);
sparePartRepository.save(part);
// 记录维修结果
order.setRepairResult(result.getDetails());
order.setCost(result.getCost());
order.setStatus(ReturnStatus.RETURNED);
returnFactoryRepository.save(order);
}
}

浙公网安备 33010602011771号