增加根据时间范围查询工单代码代码 #98

Merged
hnu202326010106 merged 1 commits from wanglei_branch into develop 4 weeks ago

@ -4,11 +4,13 @@ import com.campus.water.entity.WorkOrder;
import com.campus.water.service.WorkOrderService;
import com.campus.water.util.ResultVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;
import java.util.List;
@RestController
@ -145,6 +147,23 @@ public class WorkOrderController {
}
}
// 新增:按时间范围(+可选区域/状态查询工单复用已有Repository方法
@GetMapping("/by-time-range")
@PreAuthorize("hasAnyRole('SUPER_ADMIN', 'AREA_ADMIN')")
public ResultVO<List<WorkOrder>> getOrdersByTimeRange(
@RequestParam(required = false) String areaId, // 可选区域ID
@RequestParam(required = false) WorkOrder.OrderStatus status, // 可选:工单状态
@RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime startTime, // 必选:开始时间
@RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime endTime) { // 必选:结束时间
try {
// 直接调用Service复用已有Repository的findByCreatedTimeBetween方法
List<WorkOrder> orders = workOrderService.getOrdersByConditions(areaId, status, startTime, endTime);
return ResultVO.success(orders);
} catch (Exception e) {
return ResultVO.error(500, "按时间范围查询工单失败:" + e.getMessage());
}
}
// 获取维修工自己的工单 - 维修人员和管理员可访问
@GetMapping("/my")
@PreAuthorize("hasAnyRole('REPAIRMAN', 'SUPER_ADMIN', 'AREA_ADMIN')")

@ -1,6 +1,8 @@
package com.campus.water.service;
import com.campus.water.entity.WorkOrder;
import java.time.LocalDateTime;
import java.util.List;
public interface WorkOrderService {
@ -31,4 +33,8 @@ public interface WorkOrderService {
// 按状态查询工单的方法
List<WorkOrder> getOrdersByStatus(WorkOrder.OrderStatus status);
List<WorkOrder> getOrdersByAreaAndStatus(String areaId, WorkOrder.OrderStatus status);
// 核心复用已有Repository的时间范围查询新增组合条件查询方法
List<WorkOrder> getOrdersByConditions(String areaId, WorkOrder.OrderStatus status,
LocalDateTime startTime, LocalDateTime endTime);
}

@ -258,4 +258,24 @@ public class WorkOrderServiceImpl implements WorkOrderService {
public List<WorkOrder> getOrdersByAreaAndStatus(String areaId, WorkOrder.OrderStatus status) {
return workOrderRepository.findByAreaIdAndStatus(areaId, status);
}
@Override
public List<WorkOrder> getOrdersByConditions(String areaId, WorkOrder.OrderStatus status,
LocalDateTime startTime, LocalDateTime endTime) {
// 分步组合查询条件核心复用已有findByCreatedTimeBetween方法
List<WorkOrder> timeRangeOrders = workOrderRepository.findByCreatedTimeBetween(startTime, endTime);
// 过滤区域和状态(如果传了这些参数)
return timeRangeOrders.stream()
.filter(order -> {
// 区域过滤如果传了areaId则匹配没传则不过滤
boolean areaMatch = (areaId == null || areaId.trim().isEmpty())
|| order.getAreaId().equals(areaId);
// 状态过滤如果传了status则匹配没传则不过滤
boolean statusMatch = (status == null)
|| order.getStatus() == status;
return areaMatch && statusMatch;
})
.toList();
}
}
Loading…
Cancel
Save